我用来通过C代码有很多#ifdef,#if并且#endif指令保持一些部分活动,一些部分不活动取决于一些变量是否定义.我搜索了一些可以处理它们以生成最终C代码的东西.但是预处理对于#include和也是如此#define.但我想保留它们.
那么,有什么东西可以通过一些过滤来预处理这些文件或项目吗?
我假设你正在使用 gcc。
如果您的意思是所有#includes,我认为您需要删除它们,扩展生成的文件,gcc -E然后将 s 添加#includes回来。
如果您仅指标准标头,则该选项-nostdinc可以帮助您完成您想要的操作
用户@主机:~/test/tmp$ cat 4437465.c
#include <stdio.h>
#ifndef 输出类型
#定义输出类型1
#万一
int 主函数(无效){
#如果输出类型== 1
printf("输出类型1\n");
#elif 输出类型 == 2
printf("输出类型2\n");
#别的
printf("默认输出类型\n");
#万一
返回0;
}
用户@主机:~/test/tmp$ gcc -DOUTPUT_TYPE=2 -nostdinc -E 4437465.c
#1“4437465.c”
# 1 “<内置>”
# 1 “<命令行>”
#1“4437465.c”
4437465.c:1:19:错误:没有包含用于搜索 stdio.h 的路径
int 主函数(无效){
printf("输出类型2\n");
返回0;
}