#define 으로 함수 매크로 만들 때 return 형 문제!!

kyutae83의 이미지

C 프로그래밍 할 때
제가 #define 으로 함수 매크로를 만들어서 쓸려고 하는데요

unsigned int functionA(void);

이런 함수가 있다면

#define functionB() functionA()

이렇게 했더니 retrun type이 unsigned int인데

int 형으로 넘어 오드라구요

그래서

#define functionB() (unsinged int)functionA()

이렇게 해서 해결 하긴 했는데

원래 그런건가요??

C를 쓰긴 하는데 완전 기본까지 제대로 공부를 안해서 그런지 이런 문제가 한번씩 생기는 군요

설명 좀 잘 부탁드립니다.

chadr의 이미지

특별한 경우 아니면(속도가 매우매우 중요하다거나..) 가능하면 typedef을 쓰시거나 래핑 함수를 쓰시는 것을 추천합니다.
define을 쓰시면 디버거에서 못볼뿐더러 눈에 보이지 않는(정확히 말해서 잘못 쓰시면) 논리적 문제를 발생시킬수 있습니다.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.