gpt4 book ai didi

c - 编译器未正确检查变量声明

转载 作者:行者123 更新时间:2023-12-02 06:46:55 24 4
gpt4 key购买 nike

当声明一个变量或指针时,编译器假定变量或指针本身在声明期间被赋值时已经被声明。

我已经尝试过 gcc 和 clang,它们编译“错误”代码时没有提示。

情况 1:由于未声明“a”,因此无法编译:

void main()
{
int b=sizeof(a);
}

案例 2:编译没有问题:

void main()
{
int a=sizeof(a);
}

编译器是否应该生成“a is undeclared”错误,就像情况 1 一样?

最佳答案

Shouldn't the compiler generate the "a is undeclared" error instead, just like in case 1?

为什么?它只是看到您声明了 a

int a = sizeof(a);
// ^--- here it is, before its first use

变量的声明在看到它的声明符之后开始,就在它的(可选的)初始值设定项之前。所以你甚至可以写出真正有问题的

int a = a;

但是请注意,在您的情况下,没有任何错误。 sizeof 的结果只取决于a类型,而且类型是已知的。这是一个定义明确的初始化(从 size_tint 的转换,但不需要担心)。

关于c - 编译器未正确检查变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57506747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com