我很困惑如何使用#define,或者这甚至是我想要使用的。
我有一个头文件:
#define var 3;
int foo();
...(etc)
除了两个类似结构的文件外:
#include "header.h"
int main(int argc, char **argv){
printf("%i", var);
}
我认为我可以使用包含标题的C文件中的标题中的var错误吗?
这实际上是家庭作业的一部分,我不允许更改头文件。如果我不能像这样使用它,有没有办法在文件外使用除访问器函数之外的变量?
答案 0 :(得分:3)
只是不要在您定义的值的末尾加上分号。 而不是
#define var 3;
使用
#define var 3
使用您的定义,预处理器将print语句扩展为以下内容:
printf("%i", 3;);
...那是无效的代码。 预处理器并不真正尊重C / C ++语言的规则,它更像是一个barbar文本替换工具,可能比那个更聪明,但比C语言本身更笨...
如果您不允许更改标题,那么您仍然可以说
int my_variable = var
如果您愿意,可以在上一个声明之后添加任意数量的分号。
答案 1 :(得分: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);
}