1

我正在使用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在函数名上使用是行不通的。

问题

是否有一些特殊的编译器标志可以启用此功能,或者它们是否有错误?

4

1 回答 1

4

#ifndef X检查是否已定义具有名称的宏。X函数名和宏名属于不同的命名空间。功能的存在与否X都不会影响#ifndef X

于 2018-02-05T23:17:56.390 回答