C/C++ 언어 매크로 사용의 위험성-2편:의도하지 않은 결과

1편에서는 C/C++ 언어에서 매크로 사용 시, 타입 검사를 하지 않아서 위험하다는 글을 올렸습니다. 2편에서도 C/C++ 언어 매크로 사용 시 위험성에 대해서 적어보도록 하겠습니다. 의도하지 않은 결과(unexpected result) 매크로, 특히 함수처럼 사용하는 매크로(매크로 함수) 사용 시 인자를 주의해서 넣어야 합니다. 다음 매크로를 사용한다고 가정합니다. 이 매크로는 인자값 a를 두 번 더합니다. 2를 넣으면 4가, 5를 넣으면…

C/C++ 언어 매크로 사용의 위험성-1편:타입

몇몇 코딩 스탠다드(JSF C++ 등)에서는 #define을 이용한 C/C++ 언어 매크로 사용을 금지합니다. 대신 인라인 함수(Inline Function) 를 사용할 것을 권하고 있습니다. 왜일까요? C/C++ 언어 매크로 #define 으로 정의된 매크로는 컴파일 과정에서 정의한 문자열로 치환된다는 것을 익히 알고 있을것입니다. 예를 들어, 아래 매크로를 보겠습니다. 코드에서 아래와 같이 사용했다면, 해당 코드는 컴파일러의 전처리를 거쳐 아래와 같은 구문으로…