gpt4 book ai didi

c - Xcode- C 编程 - While 循环

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:50 25 4
gpt4 key购买 nike

我在 Xcode 中有一个与“while”循环相关的错误/警告。关于如何解决它的任何建议?

while ( (c=getchar() != '\n') && c != EOF);

While loop has empty body

IDE中的图片:

C programming using Xcode

最佳答案

在不知道它背后是哪个编译器的情况下,我可以列出其中两个的已知警告标志:

  • clang -Wempty-body;也包含在 -Wextra 中;
  • Visual C++ C4390 , 包含在 /W3

(来源:Why didn't the compiler warn me about an empty if-statement?)

虽然此编译器警告对于没有副作用的情况非常有用,例如

while (i > 0);
{
--i;
}

(这会导致死循环)

在您的具体情况下:

while ( (c=getchar() != '\n') && c != EOF);

是跳到下一行 stdin 或输入结尾的完美惯用方式。

根据 XCode 打印的警告文本(来自底层编译器),我很确定您的 XCode 配置了 clang,所以,是的,有一种方法可以使用 clang 时关闭警告:

$ clang test.c 
test.c:6:12: warning: while loop has empty body [-Wempty-body]
while (0);
^
test.c:6:12: note: put the semicolon on a separate line to silence this warning

在你的情况下:

while ( (c=getchar() != '\n') && c != EOF)
;

在那种情况下(个人喜好)我会这样做:

while ( (c=getchar() != '\n') && c != EOF)
{}

因为它们是 strictly equivalent

因此,您可以为可能不情愿地键入分号的其他情况保留警告集,并明确告诉编译器不要担心这些情况。

关于c - Xcode- C 编程 - While 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46496135/

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