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