gpt4 book ai didi

c - 如果变量不在函数的顶部,则禁用变量声明

转载 作者:太空宇宙 更新时间:2023-11-04 01:18:15 25 4
gpt4 key购买 nike

如果没有在函数顶部声明变量,我想知道如何强制 gcc 使当前编译失败。

void foo() {

int bar; //Enabled

/* some code stuff */

int bar2; //Compile Error
}

我已经看到我需要使用 -pedantic && -ansi 进行编译。我的项目已经是这样了,但是好像不行。

顺便说一句,我在 C89 中编译,确实需要留在那个 C 版本中。 (-ansi)

在我看过的所有文档中,没有允许这样做的 gcc 标志。有什么我错过的吗。

最佳答案

有一个选项可以警告在语句之后定义或声明的变量:

  • -Wdeclaration-after-statement — 警告,除非您还设置了 -Werror(始终使用 -Werror 是个好主意;您不会忘记修复警告!)
  • -Werror=declaration-after-statement — 即使您没有设置也会出错 -Werror

这会强制在任何语句 block 的顶部定义变量(如 C90 所要求的),而不是允许在需要时声明变量(如 C99 及更高版本所允许的)。这不允许:

int function(int x)
{
int y = x + 2;
printf("x = %d, y = %d\n", x, y);
int z = y % x; // Disallowed by -Wdeclaration-after-statement
printf("z = %d\n", z);
return x + y + z;
}

据我所知,没有一个选项可以阻止您在函数内部 block 的 { 之后声明变量。

关于c - 如果变量不在函数的顶部,则禁用变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51769586/

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