在C中的标题中使用“#define”

时间:2014-03-03 23:20:03

标签: c c-preprocessor

我很困惑如何使用#define,或者这甚至是我想要使用的。

我有一个头文件:

#define var     3;

int foo();

...(etc)

除了两个类似结构的文件外:

#include "header.h"

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

    printf("%i", var);
}

我认为我可以使用包含标题的C文件中的标题中的var错误吗?

这实际上是家庭作业的一部分,我不允许更改头文件。如果我不能像这样使用它,有没有办法在文件外使用除访问器函数之外的变量?

2 个答案:

答案 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);
}
相关问题