내가 작업하고있는 일부 레거시 코드에는 함수 인수로 사용하기위한 쉼표로 구분 된 목록을 반환하는 매크로가 있습니다. 이것은보기 흉하지만 구성 파일에 이러한 파일이 많이 포함되어 있으므로 지금 변경하기가 어려울 수 있습니다.C++ 전 처리기에서 인수 나누기
#define XY1 0,0
#define XY2 1,7
...
void fun_point(x,y);
fun_point(XY1);
이 기능은 호출되는 함수 인 한 올바르게 작동합니다. 매개 변수와 다른 매크로를 호출 할 때 그러나, 전체 문자열은 두 개의 인수
#define MAC_POINT(x,y) (x+y)
MAC_POINT(XY1) #not expanded by preprocessor
XY로 정의를 변경하지 않고이 문제에 대한 해결 방법은
에 쉼표 하나 개의 인수가 아닌 분할로 간주됩니다?
는/나를 내가 토론 또는 GCC 설명서에서이 문제를 발견 레거시 코드 – icabod
에 주먹을 흔들 : http://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html#Argument-Prescan – Quantum7