2011-05-17 71 views

回答

12

C++语言允许在类声明中声明一个变量。类似于:

class Mumble { 
    // etc... 
} globalMumble; 

分号是必需的语法,让编译器知道是否还声明了一个变量。这个语法是的一个慢源,非常难以解释编译错误消息。最糟糕的一个是这样的:

mumble.h:

class Mumble { 
    // etc... 
}  // <== note: semi-colon forgotten 

mumble.cpp:

#include "stdafx.h" 
#include "mumble.h" 

int main() { 
    Mumble* obj = new Mumble; 
} 

这将产生这些美妙的错误消息:

main.cpp(8): error C2628: 'Mumble' followed by 'int' is illegal (did you forget a ';'?) 
main.cpp(9): error C3874: return type of 'wmain' should be 'int' instead of 'Mumble' 
main.cpp(10): error C2440: 'return' : cannot convert from 'int' to 'Mumble' 

注意,所有错误消息引用.cpp文件,而不是包含该错误的.h文件。绝望的程序员已经在这个上掉了几个小时,还有大块头发。

C#语言是由高度熟练的C++程序员设计的。谁开始设计一种避免这些现实生活语法问题的语言。这在C#语法的许多地方都很明显。长话短说:C#不允许这种C++语法,不需要分号来帮助编译器。

+4

...虽然允许分号*,但是按照C#规范(它是可选的)。 – 2011-05-18 23:08:51

3

分号使用C#划分语句

因为类不是语句(并且大括号已经结束类定义),所以分号会是多余的。

+0

关闭它或回答它,请不要这样做。 – 2011-05-18 01:02:08

+0

@Hans:当我回答它时,它已经被认定为重复,并得到三个密切的选票。这就是生活。检查我的答案和结案的时间戳。 – 2011-05-18 03:19:38

相关问题