Когда писал метод в классе, заметил, что компилятор(VS 2015) распознает const и CONST как разные идентификаторы, почему? Есть ли разница? Для чего переопределили const в CONST?
пример кода:
class A{
public:
void a(CONST int& val);//Будет ругаться, что метод не описан!
};
void A::a(const int& val){}
Ответ
Дело в том, что в исходники часто рассчитаны на компиляцию как в режиме C, так и C++ (например, это так для заголовочных файлов WinAPI).
Для этого можно объявить CONST макросом, который раскрывается в const при компиляции C++, и в пустую строку при компиляции C.
Это часто используемый в реальности приём.
Выдержка из свежего заголовочного файла WinAPI:
#ifndef CONST
#define CONST const
#endif
В вашем конкретно случае лучше не заморачиваться, и доопределить CONST
#define CONST const
(ну или найти какой-нибудь заголовочный файл, в котором он есть).
Ещё по теме: Зачем Microsoft в WinApi создает свои макросы для имеющихся в языке определений?
Комментариев нет:
Отправить комментарий