我在执行以下代码时出错。谁能解释我犯了什么错误?
#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>
.