Что лучше:Что лучше #define PI или const double PI?
#define PI 3.14
или
const double PI = 3.14;
Это был вопрос интервью, и я, кажется, не найти однозначный ответ.
Я полагаю, что я бы предпочел не использовать макросы, но я хотел бы получить крепкий ответ на этот вопрос.
EDIT: Так question marked duplicate говорит, что определить «не уважают» областей, но я не хочу областей здесь, я хочу что-то вроде супер глобального, PI должен быть PI везде, должно быть доступ из любой точки. #define кажется мне более разумным.
Кроме того, я не вижу, где можно использовать PI ошибочно во время компиляции, поэтому, пожалуйста, укажите пример.
идентификатором утверждает, что это зависит от вашей целевой платформы. более конкретно, способ, которым компилятор создает сборку и базовый набор команд процессора. Так же, как, например, если вы #define константу double, а компилятор испускает ее как непосредственное значение, инструкция может стать на 2-4 байта больше, чем если бы она просто испустила ссылку на ячейку памяти. 2-4 байта 10000 раз добавляет не весь ад. НО, если у вас всего 4 килобайта кодового пространства на целевой платформе, вам может понадобиться сделать что-то еще. – jhbh