2014-01-14 24 views
-1

我目前使用microsoft visual studio開發C程序。我在構建頭文件時遇到了這個問題,並且我以幾種方式進行了Google搜索,但它沒有修復它。如何解決C中的C2054

這是頭文件

  #pragma 
      #ifndef DATA_H 
      #define DATA_H 

      namespace 
      { 
       //defailt court number 
       int _badminton_court, squash_court, tennis_court, futsal_court; 
       //default court label 
       char a = 'A', b = 'B', c = 'C', d = 'D'; 
      } 
      #endif 

修改

  #pragma once 
      #ifndef DATA_H 
      #define DATA_H 


       //defailt court number 
       extern int _badminton_court, squash_court, tennis_court, futsal_court; 
       //default court label 
       extern char a = 'A', b = 'B', c = 'C', d = 'D'; 

      #endif 

之後和誤差將變得 錯誤(改變):

Error 10 error LNK2005: _badminton_court already defined in Booking.obj C:\Users\ASUS\Dropbox\Assignment\ckah\Assignment_C\Assignment_C\CourtAva.obj  Assignment_C 
Error 6 error LNK2005: _a already defined in Booking.obj C:\Users\ASUS\Dropbox\Assignment\ckah\Assignment_C\Assignment_C\CourtAva.obj Assignment_C 
Error 14 error LNK1169: one or more multiply defined symbols found C:\Users\ASUS\Dropbox\Assignment\ckah\Assignment_C\Debug\Assignment_C.exe 1 1 Assignment_C 

錯誤:

Error 1 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C 
Error 4 error C2054: expected '(' to follow 'namespace' c:\users\asus\dropbox\assignment\ckah\assignment_c\assignment_c\data.h 6 1 Assignment_C 

好吧,我設計它liek這個因爲我有幾個.c文件,只有方法,將訪問相同的變量。

+5

'#pragma'什麼? –

+0

你不需要給你的名字空間命名嗎? – bgamlath

+2

C中沒有名稱空間。編譯器簡化了你正在編寫名爲「namespace」的方法,它正在尋找paren(s)。 –

回答

3

沒有namespace S IN的C++感C.

也許你想編寫C++程序?

+0

好吧,由於一些限制,我必須在C做,無論如何解決如改變命名空間或其他方法? – MoonScythe

+0

@ user3122881然後解決方案是刪除'namespace {}'。 – user694733

+0

@ user694733我嘗試刪除它,它說變異已經在我的其他.c文件中定義。 – MoonScythe