반응형
출처 : http://stackoverflow.com/questions/3437404/min-and-max-in-c
C언어에서 MIN과 MAX
C에서 정의된 MIN과 MAX가 어디에 있습니까?
가능한 일반적이고 안전하게 이를 구현하는 최고의 방법은 무엇입니까? (주요 컴파일러에서 사용하는 컴파일러 확장/빌트인을 선호합니다.)
15 개의 답변 중 1 개의 답변
C에서 정의된
MIN과MAX가 어디에 있습니까?
없습니다.
가능한 일반적이고 안전하게 이를 구현하는 최고의 방법은 무엇입니까? (주요 컴파일러에서 사용하는 컴파일러 확장/빌트인을 선호합니다.)
함수로써 저는 #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y))같은 매크로를 사용하지 않을 것입니다. 특별히, 당신의 코드에 배포할 계획이 있다면요. GCC 구문 표현에서 당신 스스로 표준인 fmax또는 fmin같은 것을 사용하거나 GCC의 typeof를 사용한 매크로를 고칠것입니다. (타입에 안전함도 보너스로 얻을 것입니다.)
#define max(a,b) \
({ __typeof__ (a) _a = (a); \
__typeof__ (b) _b = (b); \
_a > _b ? _a : _b; })
모두가 "아, 이중 평가에 대해 알고 있습니다. 문제가 없습니다."라고 말하고 몇 달 후에는 몇 시간 동안 가장 어리석은 문제를 디버깅하게 될 것입니다.
typeof 대신에 __typeof__를 사용하세요.
만약 ISO C 프로그램에서 include될 때 당신이 헤더파일을 작성한다면
typeof대신에__typeof__를 써야 작동될 것입니다.
반응형
'도움받은 정보' 카테고리의 다른 글
| [nodejs] 가능한 EventEmitter 메모리 누수 감지됨 (0) | 2017.11.29 |
|---|---|
| C의 int 배열을 정렬하고 중복 제거하기 (0) | 2017.04.13 |
| C 코드를 컴파일할 때 .so 라이브러리로 부터 특정함수만 export하는 방법? (0) | 2015.10.20 |
| MSIZAP.exe - \windows\installer를 정리하는 방법 (0) | 2015.10.05 |
| 정전이 되었다가 다시 전기가 들어오면 컴퓨터를 자동으로 켜지게 하는 방법. (0) | 2015.08.24 |