Я могу использовать директиву using namespace
, чтобы избежать столкновения имен идентификаторов/переменных, но что происходит, когда имена файлов или имена библиотек происходят в больших проектах.
В C
традиционный подход заключается в том, чтобы рекурсивно добавлять файлы с помощью директивы #include_next
. Как я могу достичь того же значения в C++
, не используя директиву #include_next
, и решить проблему дублирования имен файлов среди приложений и разделяемых библиотек. Например, работа над функцией класса() в AIX math.h происходит с идентификаторами с именем "класс".
/* GNU Lesser GPLv2.1 or later */
#ifndef FFMPEG_COMPAT_AIX_MATH_H
#define FFMPEG_COMPAT_AIX_MATH_H
#define class some_text
#include_next <math.h>
#undef class
#endif /* FFMPEG_COMPAT_AIX_MATH_H */
EDIT:
Могу ли я использовать, например, class machine-instruction-set
, где двоичный файл должен запускаться на нескольких платформах? Может ли быть столкновение пространства имен в таком случае?