C程序无法从头文件识别常量

时间:2013-04-22 00:23:00

标签: c gcc header-files

我有以下非常简单的头文件:

#ifndef __ZYNQ_CSORT_H__
#define __ZYNQ_CSORT_H__
#define CONSTANT    5
#endif

我将此头文件包含在同一文件夹中的另一个C文件中。预处理器根本没有抱怨头文件包含,但是当我尝试打印常量的值时,它告诉我它没有定义。有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:3)

当我不确定预处理器的用途时,我发现自己运行C预处理器通常很有启发性。例如,给定test1.h

#ifndef TEST1_H
#define TEST1_H
/* In TEST1_H */
#define CONSTANT 5
#endif

...和test1.c

#include "test1.h"
#include "test1.h"

int main(int argc, char **argv) {
    return CONSTANT;
}

...运行cpp -C test1.c test1.c.out-C参数使预处理器保留注释)给出test1.c.out,如下所示:

# 1 "test1.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test1.c"
# 1 "test1.h" 1


/* In TEST1_H */
# 2 "test1.c" 2


int main(int argc, char **argv) {
 return 5;
}

因此,对于我的情况,我可以确信正在包含正确的头文件。

答案 1 :(得分:0)

如果在解析此文件时已经定义了__ZYNC_CSORT_H,则

CONSTANT将是未定义的。