우리 모두는이 유명한 매크로 예제를 알고Max 매크로의 안전한 솔루션? 그것은 두 번 <code>a</code> 및 <code>b</code>을 사용하기 때문에 우리가 할 때 부정확하게,</p> <pre><code>#define max(a,b) ((a) > (b) ? (a) : (b)) </code></pre> <p>그리고 뭔가 같은 :
max(x, y++); // because this gets translated to...
((x) > (y++) ? (x) : (y++)); // y is incremented twice
효과적인 C++, 스콧에서 Meyers는 inline
함수를 사용하여 C++ 솔루션을 제공합니다.
21st Century C에서 나는 비슷한 C 해결책을 원했지만 슬프게도 이중 사용을 피하는 것이 좋습니다. 그것은 나를 슬프게했다. : '(
물론, 하나는 항상 일정한 기능을 대체 할 수하지만 이중 사용 문제를 해결이로 C 전용 매크로 솔루션은이 있는지 궁금 해서요 가능한 솔루션을
..? 당신의 구호 C로
정확히 왜 하나마다 possib 매크로를 피해야한다 르와 반대가 아닙니다. – dbrank0
당신이 관심이 있다면 여기 [http://www.drdobbs.com/generic-min-and-max-redivivus/184403774]에 대한 C++ 해결책에 대한 흥미로운 기사가 실제로있었습니다. – chris
나는 대답이 없지만 표현을 멈출 수는 없다. 조건에서 증분/감소 연산자를 사용하는 것이 내 것이 아니다. 나는 그것이 인간의 실수에 비해서 우아함이나 편리함보다는 코딩에있어서 더 많은 것을 알았다. –