2014-03-03 79 views
1

我很困惑如何使用#define,或者如果這是我想要使用的。在頭文件中使用「#define」C

我有一個頭文件:

#define var  3; 

int foo(); 

...(etc) 

除了它之外的兩個相似結構的文件:

#include "header.h" 

int main(int argc, char **argv){ 

    printf("%i", var); 
} 

我錯在想,我可以使用var從標題包含頭文件的C文件?

這實際上是家庭作業的一部分,我不允許更改頭文件。如果我不能像這樣使用它,有什麼方法可以在文件之外使用除訪問函數之外的變量嗎?

+1

'#define var 3;'是可怕的,可怕的C(特別是最後的分號)。如果這是你提供的代碼,你應該向教師投訴...... – nneonneo

+1

'#define var 3;'省略';' – wildplasser

+0

但是你的頭文件很奇怪。 '3'後的';'不應該在那裏。 – timrau

回答

3

只是不要把分號您定義的值的結束。 而不是

#define var 3; 

使用

#define var 3 

與您定義打印語句擴展到預處理器如下:

printf("%i", 3;); 

...這是無效的代碼。 預處理器並沒有真正遵守C/C++語言的規則,而是一個barbar文本替換工具,可能比這更聰明,但比C語言本身更笨拙......

如果你是不允許更改的頭,那麼你仍然可以說

int my_variable = var 

你甚至可以把任何數量的分號之前的語句後,如果你喜歡這些。

1

頭文件需要正確地定義:

#ifndef HEADER_FILE 
#define HEADER_FILE 

#define var 3 // <-- no semi 

#endif 

現在,這取決於你如何定義var,你應該能夠做到:

#include "header.h" 

int main(int argc, char **argv){ 

    printf("%i", var); 
}