Должен ли #define добавлять пробелы вокруг макросов?
Я смотрел на программу вhttp://www0.us.ioccc.org/1988/westley.cупоминается вдругой SO ответ - он должен напечатать значение пи, около 3,142, но когда я его скомпилирую и запусту, я получу0.250
, Похоже, когда препроцессор GCC (как проверенный 4.1.2, так и 3.4.6) работает в коде, он преобразует
#define _ -F<00||--F-OO--;
_-_-_
в
-F<00||--F-OO--;- -F<00||--F-OO--;- -F<00||--F-OO--;
но я думаю, чтобы программа работала, она должна быть
-F<00||--F-OO--;--F<00||--F-OO--;--F<00||--F-OO--;
то есть GCC вставляет дополнительный пробел перед расширением "макроса". Это способ#define
должен работать? (Это изменилось с 1988 года?)
РЕДАКТИРОВАТЬТакже приветствуется любая информация о том, как предотвратить появление этих пробелов.