请您解释为什么使用条件编译的代码无法编译?
// Example program
#include <iostream>
#include <string>
class Foo{
public:
#ifdef NUMBER
int number(){
return 0;
}
#endif
int number1(){
return 1;
}
};
int main()
{
#ifndef NUMBER
#define NUMBER
Foo foo;
std::cout << foo.number();
#endif
std::cout << foo.number1();
return 0;
}
显示编译错误:
In function 'int main()':
22:26: error: 'class Foo' has no member named 'number'
答案 0 :(得分:1)
如评论所述,预处理器仅前进。
以下是未定义NUMBER
的代码行:
// Example program
#include <iostream>
#include <string>
class Foo{
public:
#ifdef NUMBER
int number(){
return 0;
}
#endif
int number1(){
return 1;
}
};
int main()
{
#ifndef NUMBER
以下是您的代码行NUMBER
定义:
#define NUMBER
Foo foo;
std::cout << foo.number();
#endif
std::cout << foo.number1();
return 0;
}
NUMBER
仅在您#define NUMBER
时定义。
在您的代码中,没有Foo::number()
。