gpt4 book ai didi

C 预处理器结果

转载 作者:行者123 更新时间:2023-11-30 19:44:49 25 4
gpt4 key购买 nike

哪个结果返回此构造?我的意思是主函数中的结果变量,为什么?我知道,这个例子很奇怪;)

header1.h 文件:

extern const int clf_1;

header2.c 文件:

#include    "header1.h"
const int clf_1 = 2;

test.h 文件:

#include <header1.h>
#define xyz clf_1
#define NC_CON 2
#if (xyz== NC_CON)
#define test 40
#else
#define test 41
#endif

C 文件

#include <header1.h>
#include <test.h>
int main(int argc,char *argv[])
{
int result = 0:
if (test == 40)
{
result = 40;
}
}

最佳答案

阅读 C preprocessor 上的维基页面以及 GNU cpp 的文档( GCC 内的预处理器,即由 gccg++ 等运行...)。它是一个文本内容,并且在编译器处理定义 const int clf_1 = 2; 之前运行。仅当其中出现的所有名称均为预处理器符号(使用 #define 或使用 -D 定义)时,#if 指令才有意义。 GCCClang/LLVM 编译器的命令行上传递)

使用gcc -C -E yoursource.c > yoursource.i(在gcc之后还有一些其他选项,可能-I.是需要...你应该#include "header1.h" 等等...)然后使用编辑器或寻呼机查看生成的 yoursource.i (预处理后的表单)

如果 C 预处理器进行转换,世界将会大不相同 AST s;由于历史原因,第一个 C 预处理器是文本过滤器(作为不同的程序运行)。

关于C 预处理器结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27236796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com