Можно ли разместить макрос в пространстве имен в C ++?
Мое приложение использует другой вывод, чем стандартный вывод для регистрации информации, поэтому я написал свой собственныйLog()
, Error()
, Panic()
а такжеAssert()
функции. Чтобы организовать вещи хорошо, я вложил все вещи отладки вDebug
Пространство имен.
Это будет иметь больше смысла дляAssert()
Функция также обеспечивает исходный файл и номер строки, что возможно только с помощью__LINE__
а также__FILE__
макросы. Однако довольно неприятно, неэффективно и т. Д. Всегда нужно указывать эти два параметра.
Вот так будет выглядеть мой код:
namespace Debug {
void Assert (int condition, std::string message, std::string file, int line);
}
У меня вопрос, можно ли поместить макрос, который включает эти два параметра внутриDebug
Пространство имен? Как это:
namespace Debug {
void Assert_ (int condition, std::string message, std::string file, int line);
#define Assert(a,b) Assert_(a, b, __FILE__, __LINE__)
}
// .... Somewhere where I call the function ....
Debug::Assert (some_condition, "Some_condition should be true");
// Output: Assertion failed on line 10 in file test.cpp:
// Some_condition should be true
Это действительный с ++? Если нет, есть ли способ заставить эту работу?