Предупреждение об устаревшем заголовке (C ++) - PullRequest
2 голосов
/ 22 июля 2011

Я получаю предупреждение об устаревшем заголовке:

#ifdef __DEPRECATED
#warning This file includes at least one deprecated or antiquated header. \
Please consider using one of the 32 headers found in section 17.4.1.2 of the \
C++ standard. Examples include substituting the <X> header for the <X.h> \
header for C++ includes, or <iostream> instead of the deprecated header \
<iostream.h>. To disable this warning use -Wno-deprecated.
#endif

Однако я не вижу устаревшего заголовка, вызванного моим проектом (включая заголовки, вызванные моими библиотеками).Это заголовок, который я загружаю (или, по крайней мере, те, которые я вижу): iostream math.h assert.h fstream vector time.h.

В разделе 17.4.1.2 http://www.open -std.org / jtc1 / sc22 / wg21 / docs /apers / 2005 / n1905.pdf список заголовков только один следует использовать.

1) Есть ли где-нибудь список устаревших?

2) Есть идеи о том, как выбрать из препроцессора, какой именно заголовок ему не нравится?

ПРИВЕТСТВИЕ!

1 Ответ

5 голосов
/ 22 июля 2011

Заголовки, приходящие из мира C, должны иметь префикс c, а не постфикс.
Это означает, что вы захотите включить cmath, cassert и ctime.

В этих случаях только имя заголовка подлежит устареванию, а не его содержимое.

Примечание : вы можете определить, какие заголовки подлежат такому устареванию, сопоставив их имена вдокумент, на который вы ссылаетесь.

Очевидно, это работает только для стандартных заголовков.Например, unistd.h всегда будет unistd.h.

...