如何获得编译警告

lym*_*man 7 c++ g++

当我使用g ++ 4.1.2并启用-Wall -Wextra -Wconversion编译以下代码而没有任何警告时,我感到非常惊讶.

我希望g ++向我展示每一个警告,以避免潜在的伤害.我必须坚持使用g ++ 4.1.2.

#include <stdint.h>
#include <string>

using namespace std;

int main()
{
    uint8_t u1=1;
    uint64_t u64=1000;
    string s1="";

    u1=u64; // want warning here
    s1=u64; // want warning here
    s1=u1;
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 4

恐怕4.3之前的GCC似乎不支持这个。4.2 和 4.3 之间的描述-Wconversion发生了变化,以反映新的警告行为,并且没有迹象表明 4.3 之前的 GCC 会对此进行检查。

  • 我可以确认,gcc 4.3 产生警告,4.2 不会 (2认同)