다음과 같이 매크로를 정의하고 컴파일을 했는데요
#define LPRINT(fmt,...) \ do { \ log_->WriteLog (fmt,##__VA_ARGS__); \ } while (0)
컴파일시,
warning: anonymous variadic macros were introduced in C99
메세지가 나옵니다.
이 warnig 뜻이 무엇인지 궁금합니다..
그럼 모두 좋은 하루되세요^^
몇몇 글을 보니,
매크로 내에서 pseudo 함수를 선언하고, 특히, "가변인자(variable argument)를 사용하는 것이 C99 버전에서 소개되었다."
로 대충 (전공 영어...--; ) 해석하면 되지 않을까합니다.
해석이 맞다면, c99이전으로 컴파일하면 좀 ... 할지 모른다?가 아닐까요?
그런데, 답변하기 힘든게, gcc-3.4.2가 설치된 페도라에서 c99 /c89 /gcc 를 컴파일 명령으로 각각해보니 다 .... 워닝이 안나오고, 되더군요. 뭐지? 누가 답해주세요. --;
------------------ P.S. -------------- 지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
__VA_ARGS__ 로 옆에 있는 검색기능으로 검색해보니, 관련된 쓰레드가 몇개 나오는군요.
특별히 표준을 언급하지 않았다면, (gcc 3.3.6 기준) gcc는 ISO C90 기능에 약간의 ISO C99 기능을 지원하는 상태로 컴파일합니다.
이 default mode에서는 __VA_ARGS__를 지원하지 않는 것이 정상이므로 -pedantic 옵션을 쓸 경우, 말씀하신 것처럼 경고가 발생합니다. 이 경고가 보기 싫다면, 컴파일시 -pedantic 옵션을 빼면 됩니다.
자세한 것은 info 페이지에 잘 나와 있습니다:
$ info gcc standard
-- C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html Korean Ver: http://cinsk.github.io/cfaqs/
답변 해주신 모든 분들 감사합니다.^^
즐거운 주말 보내세요^^
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
몇몇 글을 보니,
몇몇 글을 보니,
매크로 내에서 pseudo 함수를 선언하고, 특히, "가변인자(variable argument)를 사용하는 것이 C99 버전에서 소개되었다."
로 대충 (전공 영어...--; ) 해석하면 되지 않을까합니다.
해석이 맞다면, c99이전으로 컴파일하면 좀 ... 할지 모른다?가 아닐까요?
그런데, 답변하기 힘든게, gcc-3.4.2가 설치된 페도라에서 c99 /c89 /gcc 를 컴파일 명령으로 각각해보니 다 .... 워닝이 안나오고, 되더군요. 뭐지? 누가 답해주세요.
--;
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
Re: __VA_ARGS__
__VA_ARGS__ 로 옆에 있는 검색기능으로 검색해보니,
관련된 쓰레드가 몇개 나오는군요.
특별히 표준을
특별히 표준을 언급하지 않았다면, (gcc 3.3.6 기준) gcc는 ISO C90 기능에 약간의 ISO C99 기능을 지원하는 상태로 컴파일합니다.
이 default mode에서는 __VA_ARGS__를 지원하지 않는 것이 정상이므로 -pedantic 옵션을 쓸 경우, 말씀하신 것처럼 경고가 발생합니다. 이 경고가 보기 싫다면, 컴파일시 -pedantic 옵션을 빼면 됩니다.
자세한 것은 info 페이지에 잘 나와 있습니다:
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
감사합니다
답변 해주신 모든 분들 감사합니다.^^
즐거운 주말 보내세요^^
댓글 달기