执行以下代码时出现错误。有人可以解释我在做什么错误吗?
#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");
^
答案 0 :(得分:4)
目前尚不清楚此代码应该实现什么,请查看扩展的代码以了解出什么问题(对于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>
中。