【发布时间】:2011-08-11 19:00:39
【问题描述】:
关于使用 g++ 编译后续程序。
#include<iostream>
using namespace std;
cout<<"Before Main"<<endl;
int main()
{
cout<<"Within Main"<<endl;
}
错误:'
【问题讨论】:
标签: c++
关于使用 g++ 编译后续程序。
#include<iostream>
using namespace std;
cout<<"Before Main"<<endl;
int main()
{
cout<<"Within Main"<<endl;
}
错误:'
【问题讨论】:
标签: c++
你不能在函数之外执行语句。
【讨论】:
您不能将非声明语句放在命名空间范围内。
但是,表达式语句可以转换为声明,例如
bool const bah = (cout<<"Before Main"<<endl);
这通常不是一个好主意,但也许值得了解一下?
干杯,
【讨论】:
如果不将其放在函数体中,则无法执行此类语句。如果你想要main()之前的东西,那么将它封装在一个全局结构中并定义一个对象。
struct Print {
Print() { cout<<"Before Main"<<endl; }
~Print() { cout<<"After Main"<<endl; }
} print; // <--- declare/define object
int main()
{
cout<<"Within Main"<<endl;
}
【讨论】:
这是非法的,所有要执行的东西都必须在 main 函数中。当然你可以写第二个函数,把cout<<"Before Main"<<endl;放在那里,但是main会先执行。
你可以写:
#include<iostream>
using namespace std;
void f() {
cout<<"Before Main"<<endl;
}
int main()
{
f();
cout<<"Within Main"<<endl;
}
但是 main 是第一个将被执行的函数。
【讨论】:
void; (b) “[要执行的]一切都必须在 [the] main 函数内”具有误导性; (c) “方法”在C++中没有很好的定义,甚至在C++之外它通常也表示“成员函数”,但在这里它不是成员函数。