Hi! I’m clsung

Hi! I’m clsung

clsung’s blog site, or you can call me AlanSung

Hi! I’m clsung RSS Feed
 
 
 
 

bbs with gcc new version (varargs.h obsoleted)

FreeBSD 6.0 的 GCC 換新版了(3.4.4),原來的 bbs compile 時會遇到

/usr/include/varargs.h:34:2: #error “ is obsolete with this version of GCC.”
/usr/include/varargs.h:35:2: #error “Change your code to use instead.”


換了之後,原來的 va_alist、va_dcl 就不能用啦。說是不能用,其實就是不必用囉。
換的方式是,先看看 function 內的 x = va_arg(ap, yyyyy) 的部份,直接把 yyyyy 和 x 替換到 va_alist 的地方,後面再加個 ",…"。接著刪除 va_dcl 。然後將 va_start (ap) 改為 va_start(ap, x) ,最後再把上面的 x = va_arg(ap, yyyy) 換為 x 。記得還要把原先 function 有宣告 yyyy x; 的地方刪掉。
這樣就可以了。

範例:

int
tcpcommand(va_alist)
va_dcl
{
  va_list ap;
  register char *fmt;
  char *ptr;
  va_start(ap);
  fmt = va_arg(ap, char *);
  vfprintf(NNTPwfp, fmt, ap);
 …

改為

int
tcpcommand(char *fmt, …)
{
  va_list ap;
  char *ptr;
  va_start(ap,fmt);
  vfprintf(NNTPwfp, fmt, ap);
  …
Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • funp
  • Haohao
  • Hemidemi
  • Live
  • MisterWong
  • TwitThis
  • udn

Leave a Reply

噗浪:

分類

Flickr

    clsung. Get yours at bighugelabs.com/flickr

Blogroll

    馬的警總回來了
Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Taiwan
Creative Commons Attribution-NonCommercial-ShareAlike 2.5 Taiwan