“(void)强制转换”与“ __attributes__”之间的功能区别是什么?

问题描述 投票:2回答:1
在使用GCC的virtual标记__attribute__((unused))方法的未使用参数参数与将参数强制转换为(void)之间有功能上的区别吗?

class Other { virtual int sum(int a, int b, int c); }; class Example : Other { virtual int sum(int a, int b, int c __attribute__((unused))) override { return a + b; } }; class Example2 : Other { virtual int sum(int a, int b, int c) override { (void)c; return a + b; } };

两者都可以使未使用的参数警告保持沉默,如果以后再使用该变量也不会发出警告。另外,GCC __attribute__更长。

在使用GCC的__attribute __((未使用))标记虚拟方法的未使用参数参数与将参数强制转换为(void)之间有功能上的区别吗?类Other {virtual int ...

c++ compiler-warnings unused-variables gcc-extensions
1个回答
2
投票
没有功能上的差异,因为两者都可能导致无法操作。
© www.soinside.com 2019 - 2024. All rights reserved.