【发布时间】:2015-05-05 12:11:18
【问题描述】:
我正在使用 Orwell Dev C++ IDE。最近我测试了一个简单的程序,我忘记在其中输入分号(;),但它仍然可以在 C 中正常编译,但在 C++ 中却不行。为什么?是什么原因?
// C program compiles & runs fine, even ; missing at end of struct
#include <stdio.h>
struct test
{ int a,b}; // missing semicolon
int main()
{
struct test d={3,6};
printf("%d",d.a);
return 0;
}
[警告] struct 或 union 末尾没有分号 [默认启用]
// Following is compilation error in C++
#include <stdio.h>
struct test
{ int a,b}; // missing semicolon
int main()
{
struct test d={3,6};
printf("%d",d.a);
return 0;
}
[错误] 应为 ';'在成员声明的末尾
我也在代码块 13.12 IDE 中尝试了相同的 C 程序,但它显示以下错误消息
错误:结构或联合末尾没有分号。
为什么不同的实现会给出不同的错误信息?
【问题讨论】:
-
你在问为什么不同的语言有不同的规则吗?还是您要求我们为您阅读语言规范,以查找每种语言的相关规则?
-
@MikeSeymour:那么,两种语言的规则都不同吗?什么语言规范说明了它?
-
@meet 您有兴趣了解这两种语言的语法吗?如果是,请在您的问题中添加此内容。要具体并保持你的问题客观。
-
您误解了编译器告诉您的内容。 “警告”并不意味着“您的程序很好”。这意味着“您的程序有问题,继续自担风险”。