Насколько я понимаю, #define x y
и const int x = y;
должны работать одинаково в компиляторе Visual Studio, но const int x = y;
является предпочтительным методом.
Код C у меня выглядит примерно так:
static const int x = 100000;
void SomeFunction(...)
{
volatile static int y = x;
...
}
Проблема здесь с объявлением y. Если я использую #define
для x, то проблем не возникает, но использование приведенного выше кода приводит к тому, что компилятор возвращает «error c2099: initializer не является константой».
Я пытаюсь скомпилировать из командной строки, и я не использую какие-либо флаги компилятора, поэтому я не уверен, нужно ли мне устанавливать флаг, чтобы компилятор оптимизировал const - или если Я наткнулся на какой-то особый случай.
Компиляция программы как программы на C ++ также работает, но я бы предпочел этого избежать, если это возможно.