【问题标题】:How can I have g++ print warnings for type casts to the arguments of functions? [duplicate]如何为函数参数的类型转换提供 g++ 打印警告? [复制]
【发布时间】:2012-10-23 10:24:06
【问题描述】:

可能重复:
Can I make GCC warn on passing too-wide types to functions?

当我将有符号整数传递给采用无符号整数的函数时,有没有办法让 gcc 或 g++ 产生警告?

例如:

int main(){
        char buf[8];
        int i;
        for(i=0;i<6;i++)
                buf[i] = 'a';
        buf[6]='\0';
        strcat(buf, " ");
        strncat(buf, "happystacksmashingstring",-1 );
        return 0;

}

将导致堆栈粉碎,因为 strncat 将 size_t 作为其第三个参数,这通常是一个无符号整数。然而,命令:

g++ -Wall -Wextra -Werror -pedantic -W -Weffc++ -Wconversion test.c

它包含我知道的每个警告标志,在编译时不会产生错误或警告,并且在运行时会产生损坏的堆栈。

gcc -Wall -Wextra -Werror -pedantic -W -Wconversion test.c

产生关于隐式转换的错误。为什么 -Wconversion 标志不能与 g++ 正常工作?

【问题讨论】:

标签: c++ g++ warnings compiler-warnings


【解决方案1】:

来自 g++ 的手册页:

在 C++ 中默认禁用有关有符号和无符号整数之间转换的警告,除非显式启用 -Wsign-conversion。

【讨论】:

    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2014-01-30
    • 2012-11-13
    • 2017-06-01
    相关资源
    最近更新 更多