此问题已经在这里有了答案:
执行以下代码时出现错误。任何人都可以解释我在做什么错误吗?
#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>
中。