gpt4 book ai didi

c - 告诉 gcc 在 C99 之前的模式下编译失败

转载 作者:行者123 更新时间:2023-12-04 11:25:52 25 4
gpt4 key购买 nike

我正在做一个关于 C 语言历史的讲座,并想展示一些过去不可能但现在可以实现的习惯用法(特别是在 block 中间定义变量)。我想表明旧的 C 编译器不会编译它。

gcc 具有用于设置语言标准的 -std= 选项。不幸的是,将其设置为 -std=c89 不会在 block 中间定义变量时产生编译错误。

我希望有一个更准确的 std 版本(即 - -std=knr),但我找不到任何这样的选项。

我错过了什么吗?这是 GCC 中的错误吗?

gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0

编译错误的代码:

#include <stdio.h>

int main(argc, argv)
int argc;
char *argv[];
{
printf("Hello, world\n");

int a;

return 0;
}

最佳答案

如果您想真正严格遵守 -std 标志,它应该附带 -pedantic-errors 标志。

作为演示,您的代码 wandbox使用这些标志会产生:

prog.c: In function 'main':
prog.c:9:9: error: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
int a;
^~~

关于c - 告诉 gcc 在 C99 之前的模式下编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340631/

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