Недавно мне стало интересно, что разница между #define
и static const
находится в C и почему существуют два метода для выполнения одних и тех же вещей. Я нашел некоторых людей, у которых были похожие вопросы:
Многие люди говорят о лучшей практике и конвенции, а также дают практические причины для использования друг над другом, например, необходимость передать указатель на константу, которую я могу сделать с помощью static const
, но не с #define
. Однако я еще не нашел, чтобы кто-нибудь говорил о сравнении эффективности этих двух.
Из того, что я понимаю о препроцессоре C, если у меня есть оператор вроде этого:
#define CONSTANT 6
Я создаю постоянное значение, которое можно использовать как это
char[CONSTANT]
, который фактически будет заменен этим утверждением char[6]
до фактического компиляции.
Мне кажется, что это будет более эффективно, чем использование
static const constant = 6;
, потому что это создаст переменную, называемую константой, которая будет жить в стеке, которое, как я полагаю, будет иметь некоторый багаж, чем #define
. Предполагая, что мне нужна константа в ситуации, когда я мог бы использовать либо инструкцию препроцессора #define
, либо static const
без очевидных причин выбирать один над другим, что более эффективно? И как именно я сам буду тестировать это?