使用 -Wunused-parameter 标志,您可以强制 __unused 用于未使用的参数,作为编译器优化。以下代码会导致两个警告:
#include <stdio.h>
int main(int argc, char **argv) {
printf("hello world\n");
return 0;
}
通过添加 __unused 未使用的参数来修复这些警告。
#include <stdio.h>
int main(int __unused argc, char __unused **argv) {
printf("hello world\n");
return 0;
}
当您使用标记为 __unused 的参数时,clang 4.1 不会发出警告或错误。
#include <stdio.h>
int main(int __unused argc, char __unused **argv) {
printf("hello world. there are %d args\n", argc);
return 0;
}
使用 展示相同的行为__attribute__((unused))
。
int main(int __attribute__((unused)) argc, char __attribute__((unused)) **argv) {
有没有办法在 __unused 上发出警告或错误?如果您不小心在已使用的参数上留下了 __unused 会发生什么?在上面的示例argc
中似乎具有正确的值,尽管它可能是编译器没有利用提示,我不会在没有更多理解的情况下依赖这种行为。