Информация об изменениях

Сообщение Re[6]: Головоломка с const от 15.01.2023 14:08

Изменено 15.01.2023 14:09 _NN_

Re[6]: Головоломка с const
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, AleksandrN, Вы писали:


AN>>Однажды он напишет что-то вроде

AN>>
AN>>#define A 2
AN>>#define B 3
AN>>#define C A + B
AN>>

AN>>и удивится, когда подставит С в выражение с операциями, у которых выше приоритет.

vsb>Скобки в дефайнах учат ставить сразу после того, как учат этим самым дефайнам.


И учат ставить всегда пробелы

#define A(b) 0x123e+(b)
double x = A(1); // error: invalid suffix "+" on integer constant

#define B(b) 0x123e + (b)
double y = B(1); // Работает как ожидается
Re[6]: Головоломка с const
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, AleksandrN, Вы писали:


AN>>Однажды он напишет что-то вроде

AN>>
AN>>#define A 2
AN>>#define B 3
AN>>#define C A + B
AN>>

AN>>и удивится, когда подставит С в выражение с операциями, у которых выше приоритет.

vsb>Скобки в дефайнах учат ставить сразу после того, как учат этим самым дефайнам.


И учат ставить всегда пробелы

#define A(b) 0x123e+(b)
int x = A(1); // error: invalid suffix "+" on integer constant

#define B(b) 0x123e + (b)
int y = B(1); // Работает как ожидается