可以禁用/排除预处理程序指令#include吗?

Cas*_*lav 2 c c-preprocessor preprocessor-directive

例如:如果我有两个.h文件

process1.h和process2.h

它们包含两个具有不同输出变量的函数.

process1.h:

function(int var)
 {
 return 2*var;
}
Run Code Online (Sandbox Code Playgroud)

process2.h:

function(int var)
 {
 return 10*var;
}
Run Code Online (Sandbox Code Playgroud)

可以在main.c中完成:

int main()
{
int a = 2;
#include "process1.h"
printf("%d",function(a));    //output is 4

EXCLUDE #INCLUDE "process1.h" ?????    <----can this be done in any way??
#include "process2.h"
printf("%d",function(a));    //output is 20

}
Run Code Online (Sandbox Code Playgroud)

unw*_*ind 6

不,你不能"取消包含"一个文件.想想在实际的C编译器甚至看到源文件之前#发生的所有预处理器指令(以行开头).它们只是对文件的文本进行操作,预处理器可以作为一个单独的步骤实现,只是将新文本提供给实际的编译器.

修改include依赖于调用者的操作的最佳方法是#define在包含它们之前使用包含文件中的其他宏.

仍然,你的整体语法是关闭的,你不能(通常)在C中嵌套函数.