Страницы

Поиск по вопросам

пятница, 31 января 2020 г.

const vs CONST в чем разница?

#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; вполне компилируется :)

Комментариев нет:

Отправить комментарий