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

Что лучше:

#define PI 3.14

or

const double PI = 3.14;

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

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

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

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


person Ferenc Dajka    schedule 13.10.2016    source источник
comment
id утверждают, что это зависит от вашей целевой платформы. более конкретно, способ, которым компилятор создает сборку и базовый набор инструкций процессора. Например, если вы #define используете константу типа double, а компилятор выдает ее как непосредственное значение, инструкция может стать на 2-4 байта больше, чем если бы она просто выдавала ссылку на ячейку памяти. 2-4 байта 10000 раз в сумме не так уж и много. НО, если у вас есть только 4 КБ пространства для кода на вашей целевой платформе, вы можете сделать что-то еще.   -  person jhbh    schedule 13.10.2016


Ответы (1)


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

person Patrice Chaula    schedule 13.10.2016