Здравствуйте, igna, Вы писали:
I>Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>><cxxxxx>
I>Почему?
Ну эээ, может поэтому:
Annex D (normative)
1. This clause describes features of the C++ Standard that are specified for compatibility with existing implementations.
2. These are deprecated features, where deprecated is defined as: Normative for the current edition of the Standard, but not guaranteed to be part of the Standard in future revesions.
..............
D.5 Standard C library headers
Of course, the code must be complete enough to compile and link.
Здравствуйте, igna, Вы писали:
N_>><xxxxx.h> I>Почему?
Потому что не испытываю нужду тащить всякие printf внутрь namespace std (а потом оттуда их выковыривать с помощью квалификации std::printf или, тем более, using).
Такая нужда может возникнуть лишь при конфликте имён.
А поскольку некоторые вещи в CRT делаются не на инлайнах, а на макросах
#define isdigit(_c) (_isctype(_c,_DIGIT)) // stdlib.h из VC2005
то изначально лучше не конфликтовать с именами стандартной библиотеки.
L_L>1. This clause describes features of the C++ Standard that are specified for compatibility with existing implementations.
L_L>2. These are deprecated features, where deprecated is defined as: Normative for the current edition of the Standard, but not guaranteed to be part of the Standard in future revesions.
L_L>..............
L_L>D.5 Standard C library headers
А дальше там вот что:
2 Every C header, each of which has a name of the form name.h, behaves as if each name placed in the
Standard library namespace by the corresponding cname header is also placed within the namespace scope
of the namespace std and is followed by an explicit using-declaration (7.3.3).
То есть следующая программа должна быть корректна:
#include <string.h>
int main()
{
strcmp(0, 0);
std::strcmp(0, 0);
}
Здравствуйте, Кодт, Вы писали:
К>Потому что не испытываю нужду тащить всякие printf внутрь namespace std (а потом оттуда их выковыривать с помощью квалификации std::printf или, тем более, using). К>Такая нужда может возникнуть лишь при конфликте имён.
То есть только на случай кофликта имен и существуют заголовки вида <cxxxxx>, а по умолчанию нужно использовать <xxxxx.h>?
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>ну так я-то включаю <cstring>
И тогда strcmp к примеру определен только внутри std:: и использовать его без префикса std::, а также без using std::strcmp или using namespace std не получится?
Здравствуйте, igna, Вы писали:
I>Прощу прощения за неясность вопроса, спрашивал конечно же о хедерах стандартных.
Qt например дает путь к <xxxx>, которые уже вытаскивают #inclede "..\..\..\xz\lib\src\include\xxx.h" ну или в другом порядке. Причем в директориях lib, src, include неоднократно повторены на разных уровнях, как водится
Здравствуйте, Programador, Вы писали:
P>Qt например дает путь к <xxxx>, которые уже вытаскивают #inclede "..\..\..\xz\lib\src\include\xxx.h" ну или в другом порядке. Причем в директориях lib, src, include неоднократно повторены на разных уровнях, как водится