C언어 디폴트 매개변수 질문입니다

C++ 에서는 디폴트 매개변수가 하나의 문법으로 자리잡고 았던데 c언어에서도(확장자가 .c) 되는지 궁금해서 실험해보니 안되는 것 같더라구요… 근데 또 http://soen.kr/ 이곳에서는 디폴트 매개변수를 c언어 문법으로 설명중이던데 확실한 정보가 궁금합니다 현재 비주열스튜디오 2019프로 사용중입니다

링크복사가 제대로 안되네요… 링크타고 가시면 c/c++ 카테고리에 c고급문법 카테고리에 디폴트 매개변수 내용이 있습니다!

C언어는 default arguments 를 지원하지 않습니다.
SoEn은 잘못된 정보가 많습니다. 예컨대 말씀하신 카테고리에서 void main()으로 첫 예제를 만드는데, 이는 비표준입니다.

3 Likes

그렇군요… 항상 유용하게 이용하던 사이트 였었는데 역시 정보는 한쪽에서만 듣고 믿으면 안되는 것 같습니다 저도 궁금해서 c언어 디폴트 매개변수 키워드로 검색해보니 전부 c++ 이야기들만 나왔던 이유가 있었네요 혹시 그럼 비슷하게나마 디폴트인수를 흉내내는 문법이라던가 방법 알고 계신지 궁금합니다 물론 c언어로요! 답변 감사드립니다

default arguments in c 등의 키워드로 한 번 검색해보세요. 원하시는 솔루션은 없을 듯 합니다.

C에서도 매크로 흑마법으로 default argument가 가능하긴 합니다.

#define ZERO_DEF_2(...) ZERO_DEF(__VA_ARGS__, 0, )
#define ZERO_DEF(FUNC, _0, _1, ...) FUNC(_0, _1)
#define myFunc(...) ZERO_DEF_2(myFunc, __VA_ARGS__)

요렇게 하면 myFunc의 두 번째 인자는 default argument 0을 넣은 효과가 납니다

당연하지만 타입 세이프티 따위는 없습니다

이런 코드는 어떤 의미를 가지고 있는지 궁금합니다. 예로, ZERO_DEF, VA_ARGS_ , ZERO_DEF_2 이런 키워드들이 가지고 있는 의미는 어떻게 되는지요!

매크로 흑마법은 아직 쳐다보시면 아니됩니다.

마음속 깊은곳에 묻어놓겠읍니다…