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