C程序不能从头文件中识别常量



我有以下真正简单的头文件:

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

我将这个头文件包含在同一文件夹中的另一个C文件中。预处理器对头文件include没有任何抱怨,但是当我试图打印常量的值时,它告诉我它没有定义。有人知道怎么回事吗?

当我不确定预处理器要做什么时,我发现单独运行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;
}
因此,对于我的例子,我可以确信包含了正确的头文件。

如果__ZYNC_CSORT_H在解析该文件时已经定义,则CONSTANT将未定义。

最新更新