我有以下非常简单的头文件:
#ifndef __ZYNQ_CSORT_H__
#define __ZYNQ_CSORT_H__
#define CONSTANT 5
#endif
我将此头文件包含在同一文件夹中的另一个 C 文件中。预处理器根本不会抱怨头文件包含,但是当我尝试打印常量的值时,它告诉我它没有定义。有谁知道怎么回事?
我有以下非常简单的头文件:
#ifndef __ZYNQ_CSORT_H__
#define __ZYNQ_CSORT_H__
#define CONSTANT 5
#endif
我将此头文件包含在同一文件夹中的另一个 C 文件中。预处理器根本不会抱怨头文件包含,但是当我尝试打印常量的值时,它告诉我它没有定义。有谁知道怎么回事?
当我不确定预处理器在做什么时,我发现自己运行 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 将是未定义的。