Xcode-C编程 – 循环
我在Xcode中有一个与“while”循环相关的错误/警告。 有关如何解决它的任何建议?
while ( (c=getchar() != '\n') && c != EOF);
虽然循环有空体
IDE中的图片:
在不知道它背后的编译器的情况下,我可以列出其中2个的已知警告标志:
- clang
-Wempty-body
; 包含在-Wextra
; - Visual C ++ C4390 ,包含在
/W3
(来源: 为什么编译器没有警告我一个空的if语句? )
虽然这个编译器警告对没有副作用的条件非常有用
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) {}
因为它们完全相同
因此,您可以将警告集留给其他可以不情愿键入分号的情况,并明确告诉编译器不要担心这些情况。