3

除了声明、定义和预处理器指令之外,你不能有函数之外的代码。

该陈述是否准确,还是我遗漏了什么?我正在教我的侄子编程,他试图在 main 之前放置一个 while 循环。他还很年轻,我想给他一个简单的规则,他可以理解。

4

5 回答 5

2

不完全——你也可以将表达式放在全局变量声明中:

int myGlobalVar = 3 + SomeFunction(4) - anotherGlobalVar;

但是你只能把表达式放在这里,它必须计算你初始化全局的值。您不能放置完整的语句(没有代码块、没有if语句、没有循环等)。此代码将在main()有机会运行之前执行,因此请小心您在此处执行的操作。我建议不要在全局初始化程序中调用函数,除非你无法避免。

于 2010-10-28T16:57:46.970 回答
1
  • 对于你的侄子:
    不,你不能这样做。
  • 对于您自己:
    从技术上讲,编译器的输入是您在运行预处理器后得到的。所以,让我们把预处理器排除在外。在它运行之后,你会得到一个 C++ 程序,它是一系列声明。一些声明也可能是定义,一些定义(如函数定义)可能在其中包含语句。
    高温高压
于 2010-10-28T16:59:39.733 回答
0

是的,每一种做某事的语句必须驻留在可以使用它的上下文中(这不适用于变量初始化)。

这是因为 C++ 是一种结构化的编程语言,它将其行为封装在过程中,而不是非结构化的语言,其中您只有一个级别的代码并且没有范围。

于 2010-10-28T16:59:01.180 回答
0

是的-您不能在函数之外粘贴随机可执行代码。

于 2010-10-28T16:54:20.103 回答
0

嗯,有命名空间……还有 Adam Rosenfield 提到的东西……还有可能是函数外部的异常 try/catch。不幸的是,我不记得语法,也无法用谷歌找到它。

于 2010-10-28T17:05:28.530 回答