不能在预处理器指令中使用 printf



我在执行以下代码时出错。谁能解释我犯了什么错误?

#include <iostream>
using namespace std;
#define one 1
#ifdef one
printf("one id defined");
#endif
void func1(); 
void __attribute__((constructor)) func1(); 
void func1() 
{ 
printf("before"); 
} 
int main() 
{ 
cout <<"main";
return 0; 
} 

以下是我遇到的错误。

prog.cpp:5:11: error: expected constructor, destructor, or type conversion before '(' token
printf("one id defined");
^

目前尚不清楚这段代码应该实现什么,请查看扩展代码以了解出了什么问题(对于 gcc-E(。它将类似于:

#include <iostream>
using namespace std;

printf("one id defined");
void func1(); 
void __attribute__((constructor)) func1(); 
void func1() 
{ 
printf("before"); 
} 
int main() 
{ 
cout <<"main";
return 0; 
} 

但不能在文件范围内调用函数。可能有一个声明/定义,这就是编译器需要构造函数、析构函数或类型转换的原因。

PS:您包括<iostream>但随后使用printf。这有点奇怪。printf<cstdio>.

最新更新