http://www0.us.ioccc.org/1988/westley.c에있는 프로그램을보고 있는데, another SO answer에 언급되어 있습니다. 파이의 값을 3.142로 인쇄해야합니다. 그러나 컴파일하고 실행하면 0.250
이됩니다. GCC의 전처리 (테스트 모두 4.1.2과 3.4.6)이 코드를 실행하면 프로그램이 작동하려면, 그것은#define은 매크로 주위에 공백을 추가해야합니까?
#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 년 이후로 바뀌 었습니까?)
EDIT : 또한 이러한 공백이 표시되지 않도록하는 방법에 대한 정보는 감사하겠습니다. 나는이 동작은 표준을 준수 알고
이 문맥에서 '-'는 이항 빼기가 아닌 단항 빼기라고 생각합니다. –
나는이 답변을 무슨 일이 일어나는지에 대한 가장 분명한 설명으로 받아 들였습니다 .- 나는 크리스의 의견에 따라 편집했습니다 (나는 그것을 받아들이고 있기 때문에 정확도는 중요합니다). –