Могу ли я предупредить GCC о передаче слишком широких типов в функции?

Ниже приведен некоторый явно неисправный код, для которого, как мне кажется, компилятор должен выдавать диагностическое сообщение. Но ниgcc ниg++ даже со всеми вариантами предупреждений, о которых я мог подумать:-pedantic -Wall -Wextra

#include <stdio.h>

short f(short x)
{
    return x;
}

int main()
{
    long x = 0x10000007;   /* bigger than short */
    printf("%d\n", f(x));  /* hoping for a warning here */
    return 0;
}

Есть ли способ сделатьgcc а такжеg++ предупредить об этом? Кстати, есть ли у вас другой компилятор, который предупреждает об этом по умолчанию или в довольно распространенной конфигурации дополнительных предупреждений?

Примечание: я использую GCC (компиляторы C и C ++) версии 4.2.4.

Изменить: я только что нашел, чтоgcc -Wconversion делает трюк, но тот же вариантg++ нет, и я действительно использую C ++ здесь, поэтому мне нужно решение дляg++ (и теперь интересно, почему-Wconversion не похоже это).

Редактировать:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34389 предполагает, что это может быть исправлено вg++ 4.4...может быть? Мне пока не ясно, если это та же проблема и / или действительно ли исправление в этой версии. Может быть, кто-то с 4.3 или 4.4 может попробовать мой тестовый пример.

Ответы на вопрос(2)

Ваш ответ на вопрос