处理一些指令而留下其他指令

Gul*_*han 7 c c-preprocessor

我用来通过C代码有很多#ifdef,#if并且#endif指令保持一些部分活动,一些部分不活动取决于一些变量是否定义.我搜索了一些可以处理它们以生成最终C代码的东西.但是预处理对于#include和也是如此#define.但我想保留它们.

那么,有什么东西可以通过一些过滤来预处理这些文件或项目吗?

pmg*_*pmg 0

我假设你正在使用 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;
}