我試圖在Visual Studio Express的2010C代碼從GCC到Visual Studio Express的2010
我有以下的頭文件將一些代碼,我已經寫了,並用gcc編譯成功地。
#ifndef _SYMTAB_H_
#define _SYMTAB_H_
#define NHASH 997
typedef enum {NOTYPE, INTTYPE, DOUBLETYPE, STRINGTYPE} SYMBOLTYPE;
typedef union {
int intvalue;
double doublevalue;
char *stringvalue;
} SYMBOLVALUE;
typedef struct {
SYMBOLTYPE type;
char *name;
SYMBOLVALUE value;
} SYMBOL;
void initSymbolTable(void);
SYMBOL *lookup(char *sym);
SYMBOL *addIntSymbol(char *name, int value);
SYMBOL *addDoubleSymbol(char *name, double value);
SYMBOL *addStringSymbol(char *name, char *value);
char *getSymbolName(SYMBOL *sym);
int getIntSymbolValue(SYMBOL *sym);
double getDoubleSymbolValue(SYMBOL *sym);
char *getStringSymbolValue(SYMBOL *sym);
void printSymbolTable(void);
#endif
如果我使用頭文件,如寫一段代碼:
int main(int argc, char *argv[]) {
initSymbolTable();
printSymbolTable();
SYMBOL *intSymbol = addIntSymbol("pippo", 10);
printSymbolTable();
printf("All tests successfull\n");
return 0;
}
我得到的跟隨着錯誤:
錯誤C2275:「符號」:非法使用這種類型的作爲表達
是descrideb這裏:http://msdn.microsoft.com/en-us/library/76c9k4ah(v=vs.71).aspx
無論如何,我不明白這有什麼問題。 我還在C/C++ - > Advanced下的prject屬性中將「編譯爲」屬性設置爲「編譯爲C代碼」。而且所有文件都保存爲* .c和* .h。
MSVC++不是C編譯器,因爲它沒有實現C99標準;它無法編譯使用C99標準(1999年批准;十年前)批准的功能的有效C代碼。解決方案:不要使用C++編譯器來編譯C代碼。 – Sebivor 2013-04-05 14:20:05