“ stderr;”声明不会发出警告

问题描述 投票:3回答:1

假设我有这样的源代码:

#include <stdio.h>

FILE *p;

int main(void) {
    p;
}

...将编译(使用gcc)而没有任何错误或警告-除非我打开-Wall,在这种情况下,将输出statement with no effect警告。

但是代码是否像这样:

#include <stdio.h>

int main(void) {
    stderr;
}

...无论-Wall,都不会显示警告。

我在这里想念东西吗?

gcc版本9.3.0

c gcc stdout stderr gcc-warning
1个回答
0
投票

是的,如果你写类似的东西:

0;

"Hello world";

您将获得相同的结果。原因是语句可以是表达式(任何类型),后跟C中的分号;。仅删除表达式值,然后继续执行下一条语句(在您的情况下没有)。在我的示例中,编译器只是删除了表达式的0值或字符串文字"Hello world",结果为空。

© www.soinside.com 2019 - 2024. All rights reserved.