Ошибки, баги, вопросы - страница 2863

TheXpert:
наверное только так

К сожалению, задача не решается.

Не возможно на форуме создать опрос.  После нажатия на создать выкидывает на главную.
TheXpert:
наверное только так

Так а почему не работает?

@Ilyas @Slava ?

Andrey Khatimlianskii:

Так а почему не работает?

Скорее всего, нигде не работает такой подход. Т.к. идет такая замена, где VALUE справа не определен.

#define VALUE (VALUE*2)
fxsaber:

Скорее всего, нигде не работает такой подход. Т.к. идет такая замена, где VALUE справа не определен.

Да и зло это, чужую макроподстановку менять. Тем более, если это предопределенные макросы среды. Мало ли в каком месте, после сборки всех файлов проекта, переопределение макроса в конечном итоге окажется. Лучше уж свой макрос _VALUE определить.
Vladimir Simakov:
Да и зло это, чужую макроподстановку менять.

Без этого зла не получилось бы такое.

Vladimir Simakov:
Да и зло это, чужую макроподстановку менять. Тем более, если это предопределенные макросы среды. Мало ли в каком месте, после сборки всех файлов проекта, переопределение макроса в конечном итоге окажется. Лучше уж свой макрос _VALUE определить.
Можно вопрос, почему нельзя использовать присвоение значения VALUE глобальной переменной и её умножать и подставлять в конечный дефайн?
Valeriy Yastremskiy:
Можно вопрос, почему нельзя использовать присвоение значения VALUE глобальной переменной и её умножать и подставлять в конечный дефайн?

Можно, но тогда смысл макроподстановки теряется (подставить значения в код). Вся надежда на компилятор останется, что он const type (ты, кстати, определился с типом переменной?) преобразует в с++ constexpr type

А так, да, можно

#ifdef MACROS
   const int gValue=2*VALUE;
   #undef VALUE
   #define VALUE gValue
#endif
Vladimir Simakov:

А так, да, можно

Не прокатит с таким.

void Func( int = VALUE ) {}
fxsaber:

Не прокатит с таким.

Ну да. Еще раз попросим constexpr, что бы вот так можно было
constexpr auto x = 100;

void Foo(int _x = x) {
    std::cout << _x<<std::endl;
}

int main() {
    Foo();
    return 0;
}