【发布时间】:2018-01-31 02:06:25
【问题描述】:
来自 Scott 的 Programming Language Pragmatics:
如果程序员希望调用一个返回的子程序 值,但在这种特殊情况下不需要该值(所有 重要的是副作用[s]),那么 C 中的返回值可以是 通过将其“铸造”为无效而丢弃:
foo_index = insert_in_symbol_table(foo); ... (void) insert_in_symbol_table(bar);
我可以调用这样一个返回值的子程序,就好像它返回了void?
insert_in_symbol_table(bar);
我违反了哪些语法或语义规则?
谢谢。
【问题讨论】:
-
如果被告知编译器会抱怨。
-
@IgnacioVazquez-Abrams 我如何告诉 gcc/clang/tcc 这样做?
-
@PSkocik:
-Wunused-result -
@IgnacioVazquez-Abrams 那不行。
-Wunused-result应该默认打开,它只对显式标记为__attribute__((__warn_unused_result__))的函数发出警告。还是谢谢。 -
@PSkocik:GCC 手册页说
-Wno-unused-result是默认值。
标签: c