2016-10-13 4 views
-1

Что лучше:Что лучше #define PI или const double PI?

#define PI 3.14 

или

const double PI = 3.14; 

Это был вопрос интервью, и я, кажется, не найти однозначный ответ.

Я полагаю, что я бы предпочел не использовать макросы, но я хотел бы получить крепкий ответ на этот вопрос.

EDIT: Так question marked duplicate говорит, что определить «не уважают» областей, но я не хочу областей здесь, я хочу что-то вроде супер глобального, PI должен быть PI везде, должно быть доступ из любой точки. #define кажется мне более разумным.

Кроме того, я не вижу, где можно использовать PI ошибочно во время компиляции, поэтому, пожалуйста, укажите пример.

+0

идентификатором утверждает, что это зависит от вашей целевой платформы. более конкретно, способ, которым компилятор создает сборку и базовый набор команд процессора. Так же, как, например, если вы #define константу double, а компилятор испускает ее как непосредственное значение, инструкция может стать на 2-4 байта больше, чем если бы она просто испустила ссылку на ячейку памяти. 2-4 байта 10000 раз добавляет не весь ад. НО, если у вас всего 4 килобайта кодового пространства на целевой платформе, вам может понадобиться сделать что-то еще. – jhbh

ответ

0

Вы хотели бы PI быть постоянными и быть в объеме за столько, сколько приложение работает так статический Const PI будет хорошо