我有三个文件:main.c
#include <stdio.h>
#include "file3.h"
#define PERMISSION
int main()
{
#ifdef PERMISSION
myfunction1();
#else
myfunction2();
#endif // PERMISSION
return 0;
}
file2.c
#include <stdio.h>
#include "file3.h"
#ifdef PERMISSION
void myfunction1()
{
printf("Inside myfunction1 on file2.c \n");
}
#else
void myfunction2()
{
printf("Inside myfunction2 on file2.c \n");
}
#endif
file3.h
#ifndef FILE3_H_INCLUDED
#define FILE3_H_INCLUDED
#ifdef PERMISSION
void myfunction1();
#else
void myfunction2();
#endif
#endif
我想通过宏PERMISSION从主文件或头文件控制3文件项目的编译。如果已定义,则应在所有三个文件上编译所有myfunction1部分。如果不是,则myfunction2部分。但是,如果出现“ #define PERMISSION”,并且将其放置在main.c或file3.h上,我就会报错。
代码块向我显示file2和file3默认为else部分,因此它们未看到PERMISSION定义。我不想将其放在所有文件上并在我不定义时修改所有文件现在,它以未定义的对myfunction1的引用出现错误也许我不应该将#ifdef放在头文件file3.h中,但是仍然无法正常工作。
如何正确处理?
我有三个文件:main.c #include
将它添加到您的编译器命令行中的位置
您需要在所有文件中#define权限。要么