min 매크로를 쓰려면 ..

kbsoo의 이미지

:oops:

#include <stdlib.h>
void
main(void)
{
int a;
a=min(10, 11);
printf("%d",a);
}

이러면
undefined reference to '_min'
이라는 메시지가 링크될 때 나옵니다.

링크할 때 특정한 라이브러리를 지정해줘야 하는지요?

pynoos의 이미지

인클루드한 stdlib.h에 min 이라는 macro가 정의 안되어 있군요.

library 에 있는 것이 아니므로 linker 에러가 나는 것이 맞습니다.

min 정도는 그냥 define해서 사용하는 것이 좋습니다.

purewell의 이미지

#define min(a,b) (((a)>(b))?(b):(a))

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

kbsoo의 이미지

turbo c나
openwatcom c
같은 컴파일러에는 stdlib에 min이 매크로 함수로 정의되어 있어서
그 부분을 의심하지 않았습니다.

min이 표준 라이브러리에 포함된 매크로가 아니었군요.

고맙습니다.

cedar의 이미지

kbsoo wrote:
turbo c나 openwatcom c
같은 컴파일러에는 stdlib에 min이 매크로 함수로 정의되어 있어서
그 부분을 의심하지 않았습니다.
min이 표준 라이브러리에 포함된 매크로가 아니었군요.
고맙습니다.

아닙니다. min과 max는 표준 라이브러리에 포함되어 있습니다.
다음 헤더를 인클루드 하시면 됩니다.
#include <algorithm>
물론 이것은 다음과 같이 정의된 템플릿 함수 입니다.

template <typename T>
const T& min(const T& a, const T& b)
{
  return a < b ? a: b;
}

template <typename T>
const T& max(const T& a, const T& b)
{
  return a > b ? a: b;
}