在同一范围内重复变量名称

C 标准中表示的约束示例是在范围 1)中 声明了两个同名的变量,例如:

void foo(int bar)
{
    int var;
    double var;
}

此代码违反约束,必须在编译时生成诊断消息。与未定义的行为相比,这非常有用,因为在程序运行之前,开发人员会被告知问题,可能会做任何事情。

因此,约束倾向于是在诸如此类的编译时容易检测到的错误,导致未定义行为但在编译时难以或不可能检测到的问题因此不是约束。

1)确切的措辞:

Version = C99

如果标识符没有链接,则除了 6.7.2.3 中指定的标记之外,标识符(在声明符或类型说明符中)的声明不应超过一个具有相同作用域和相同名称空间的声明。