2

私の質問は、以下のコメント行の 1 つだけに対して VC が警告 4365 を発行し、他の行に対して警告を発しないのはなぜですか?

#pragma warning(1: 4365)

void test1(const unsigned short) {}

unsigned short test2() { return 0; }

int main()
{
    const unsigned short a = 0;
    const unsigned short b = 0;
    test1(a + b);       // This line gives no warning
    test1(test2() + b); // This line gives C4365
    return 0;
}

VS2010 および VS2012 Express でテスト済み。

参考までに、完全な警告テキストは次のとおりです。

warning C4365: 'argument' : conversion from 'int' to 'const unsigned short', signed/unsigned mismatch

Clang 3.3 (Clang-Win32 および ClangVSx 経由) を使用すると、このコードで警告は報告されません (もちろん、不明なプラグマを除く)。

4

0 に答える 0