Время от времени некоторые функции должны быть скомпилированы условно.Например, есть class Logger
, который используется только тогда, когда макрос WITH_LOGGING
равен #define
d:
// Logger.cpp
#ifdef WITH_LOGGING
#include <Logger.h>
// several hundred lines
// of class Logger
// implementation
// follows
#endif
, что не очень удобно - если читатель не просматривает файл, он не может быть уверенчто соответствующий #endif
- это позиция в конце файла, и поэтому все содержимое файла исключается с помощью #ifdef
.Я бы предпочел иметь что-то вроде этого:
// Logger.cpp
#ifndef WITH_LOGGING
#GetOutOfThisFile
#endif
#include <Logger.h>
// several hundred lines
// of class Logger
// implementation
// follows
, чтобы было ясно, что если WITH_LOGGING
не #define
d, то компилятор просто пропускает остальную часть файла.
Возможно ли что-то подобное в C ++?