В определениях классов или функций, если разработчику необходимо приложить дополнительную характеристику, он использует MACROS, чем жесткое кодирование в каждом определении классов или функций. Это хорошая практика для программирования. потому что в один прекрасный день, если вам нужно изменить эту характеристику, вам нужно изменить только одно место, не везде.
Некоторые использование макросов в определении класса
#ifdef CONTROLLER_EXPORTS
#define CONTROLLER_API __declspec(dllexport)
#else
#define CONTROLLER_API __declspec(dllimport)
#endif
class CONTROLLER_API CConfiguration{
} ;
Вы можете получить еще несколько окон, связанных полезные подсказки здесь. http://msdn.microsoft.com/en-us/library/dabb5z75(v=vs.80).aspx
Даже вы можете использовать модификаторы доступа так же, как это, потому что некоторое время для тестирования вам может потребоваться временно изменить уровень доступа.
#define PRIVATE private
#define PUBLIC public
class A{
PRIVATE:
int m_a;
PUBLIC:
int m_b;
}
Тогда какая именно проблема? это может быть любая полезная характеристика, как указано выше. вот один пример я получил от мерзавца
#define SCOPED_LOCKABLE __attribute__ ((scoped_lockable))
- Для получения подробной информации о
__attribute__
проверки here
- Для источника я получил выше проверки кода here
Я думаю, что с некоторой конфигурацией, макро конец (см. http://gperftools.googlecode.com/svn-history/r99/trunk/src/base/thread_annotations.h) –
FYI: Код из открытого проекта проекта Googleddd: https: // github.com/google/leveldb/blob/77948e 7eec0613fb5cbecb7e320b9498607030b5/Util/mutexlock.h –