可以在函数名上使用#ifndef 吗?
possible to use #ifndef on a function name?
我正在使用 MicroPython,他们的头文件使用了大量的
#ifndef function_name
void function_name(const char *str, size_t len);
#endif
同时使用在线 C 和 C++ 编译器,我尝试使用以下代码在 C++ 中对此进行测试
#include <iostream>
using namespace std;
void func();
#ifndef func
int a = 5;
#else
int a = 3;
#endif
int main()
{
cout << "a = " << a << endl;
}
在 C 中
#include <stdio.h>
void func();
#ifndef func
int a = 5;
#else
int a = 3;
#endif
int main()
{
printf("Hello World");
printf("a = %d\n", a);
return 0;
}
两次,我都得到 5
,这意味着在函数名称上使用 #ifndef
不起作用。
问题
是否有一些特殊的编译器标志可以启用此功能,或者它们是否存在错误?
#ifndef X
检查是否定义了名称为 X
的 宏 。函数名和宏名属于不同的命名空间。函数 X
的存在与否不会影响 #ifndef X
.
我正在使用 MicroPython,他们的头文件使用了大量的
#ifndef function_name
void function_name(const char *str, size_t len);
#endif
同时使用在线 C 和 C++ 编译器,我尝试使用以下代码在 C++ 中对此进行测试
#include <iostream>
using namespace std;
void func();
#ifndef func
int a = 5;
#else
int a = 3;
#endif
int main()
{
cout << "a = " << a << endl;
}
在 C 中
#include <stdio.h>
void func();
#ifndef func
int a = 5;
#else
int a = 3;
#endif
int main()
{
printf("Hello World");
printf("a = %d\n", a);
return 0;
}
两次,我都得到 5
,这意味着在函数名称上使用 #ifndef
不起作用。
问题
是否有一些特殊的编译器标志可以启用此功能,或者它们是否存在错误?
#ifndef X
检查是否定义了名称为 X
的 宏 。函数名和宏名属于不同的命名空间。函数 X
的存在与否不会影响 #ifndef X
.