簡體   English   中英

從gcc到Visual Studio Express 2010的C代碼

[英]C code from gcc to Visual Studio Express 2010

我正在嘗試移動一些我編寫的代碼並使用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:'SYMBOL':非法使用此類型作為表達式

這是descrideb: http//msdn.microsoft.com/en-us/library/76c9k4ah (v = vs.71) .aspx

無論如何,我不明白這有什么不對。 我還在C / C ++ - > Advanced下的prject屬性中將“Compile As”屬性設置為“Compile as C Code”。 此外,所有文件都保存為* .c和* .h。

您無法在Visual Studio支持的C版本中聲明變量中間函數。 你需要在頂部聲明它:

int main(int argc, char *argv[]) {
    SYMBOL *intSymbol;

    initSymbolTable();

    printSymbolTable();

    intSymbol = addIntSymbol("pippo", 10);
    ...

或者,您可以右鍵單擊在解決方案資源管理器中拋出錯誤的.c​​文件,轉到C / C ++ - > Advanced並將Compile As設置為編譯為C ++代碼。 這樣您就不需要編輯源代碼了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM