如何使 gcc 警告缩小函数参数
Posted
技术标签:
【中文标题】如何使 gcc 警告缩小函数参数【英文标题】:How to make gcc warn about narrowing function parameters 【发布时间】:2018-01-05 19:31:11 【问题描述】:下面的程序涉及一个隐式缩小的函数参数。信息可能会丢失。
void func(short)
int main()
int i = 0x7fffffff;
func(i);
如果我使用-Wall -Wextra
使用 gcc 编译这个程序(C 或 C++),我会收到没有警告!
当然,这种行为通常会被认为是不可取的。
当这些缩小转换发生时,是否有一些 gcc 命令行参数会触发诊断消息?
【问题讨论】:
选项:-Wconversion
将允许编译器输出有关此类问题的警告消息。
我只是担心编译器可能会将0xffffffff
解释为-1,并以某种方式意识到该值适合短。这是一个远射。
这个问题是关于gcc
,而不是关于C++
(这是一种不同的语言)所以请删除c++
标签
MSVC 对象为其他对象:错误 C2055:预期的形式参数列表,而不是类型列表。这对于函数 prototype void func(short);
是可以的,但对于它的实现则不行,因为代码不能使用没有标识符的参数。这不是警告,而是错误。
【参考方案1】:
对 gcc/clang 使用 -Wconversion
。 /W4
可用于 VC++。
online compiler
【讨论】:
注意there is also a -Wconversion wiki以上是关于如何使 gcc 警告缩小函数参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 eax 和 esi 中调用带有参数的函数。 GCC C++
gcc 警告“在 GCC 7.1 中为 X 传递的项目参数已更改”是啥意思?
如何在 Qt Creator 中启用自定义 gcc 参数? [复制]