+ -
当前位置:首页 → 问答吧 → 头文件里面能调用函数吗?

头文件里面能调用函数吗?

时间:2011-11-30

来源:互联网

大家好:
  我的代码是类似于这样的:
这是一个头文件aaa.h
C/C++ code

#include "bbb.h"

#if ((getValue() == 1))
#define MODE (1)
#else
...
#endif



然后getValue()是在bbb.c中定义的一个函数类似于这样:
C/C++ code

int getValue(void)
{
    int x;
    if(条件为真)
        x=1;
    else
        x=0;
    return x;
}



然后我编译以后会提示头文件aaa.h中调用函数那句话出错,error: missing binary operator before token "("
请问我应该如何修改呢?

作者: bolin123   发布时间: 2011-11-30

#if 条件编译中不能使用函数,因为条件编译是在编译前处理的,这是后还没有函数生成

作者: xrunning   发布时间: 2011-11-30

函数需要在被定义后引用,宏在编译的时候被包含,所以无法引用函数

作者: studyCBC   发布时间: 2011-11-30

不可以的,
#if #else等等都是预处理指令,是在编译之前需要进行的步骤!预处理完毕后才能编译,编译成功后才能运行。而函数调用发生在运行的时候。

作者: finewind   发布时间: 2011-11-30

不可以的

作者: yuzhenhua001   发布时间: 2011-11-30

引用 1 楼 xrunning 的回复:
#if 条件编译中不能使用函数,因为条件编译是在编译前处理的,这是后还没有函数生成

++

作者: AnYidan   发布时间: 2011-11-30

预处理还没到编译呢

作者: xunxun1982   发布时间: 2011-11-30

大家的说得对,#if是预编译指令,所以 #if n 指令中的n必须为一个已经存在的定量,不能是函数或者变量

作者: lrmliang   发布时间: 2011-12-01