c언어...같은 함수에 다른 타입의 매개변수 입력 받는 방법이 있을까요?

bao의 이미지

c언어에서 오버로딩은 허용하지 않는거 같은데

void func(a, b)
{
}
이런식으로 함수가 있다고 하면

b의 값이 int, long, long 등 여러가지가 올수가 있습니다.

이걸 구현할 방법이 있을까요??

조언 부탁드립니다.

ymir의 이미지

b 를 void * 로 받으면, 함수 안에서 다양하게 casting 해서 쓸 수는 있습니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

akayong의 이미지

https://stackoverflow.com/questions/479207/how-to-achieve-function-overloading-in-c

뭐, printf 같이, 함수에 타입을 같이 받는 방법이나
struct + union 조합으로 하기도 하고
#define으로 처리 하기도 하고..
다양한 방법들을 유저들이 공유하고 있네요

익명 사용자의 이미지

위에 답변들처럼 유사하게 구현은 가능합니다만, 그 전에 왜 이게 필요하다고 생각하는지 고민해 보시기 바랍니다.

seungdam의 이미지

아마 이부분에 대해서 가장 좋은 개념은 아마 Generic일겁니다
https://blog.naver.com/fb_lua/221189874155
이 블로그 강의 한번 살펴보세요

익명 사용자의 이미지

C11이 허용이 된다면, 위 기능을 구현하는 가장 간단한 방법은 _Generic입니다.

https://en.cppreference.com/w/c/language/generic

Yi Soo An@Google의 이미지

user-defined type 까지 고려를 하신다면 #define이 무난합니다. 그런데 이 방식은 디버깅이 까다롭습니다.

---------------
Happy Hacking!