亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1155 | 回復: 0
打印 上一主題 下一主題

在va_arg 中使用template 的問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-09-22 11:46 |只看該作者 |倒序瀏覽
在va_arg 中使用template 的問題
今天寫了一個模板類,其中用到了va函數(shù)(可變參數(shù)函數(shù))。

在調(diào)用 va_arg時編譯出錯了,

那句話是這樣寫的:
value = va_arg( parms , template * );

編譯的時候報出error: `va_arg' was not declared in this scope。

這個錯誤報的很奇怪,我已經(jīng)添加了#include
并且在以前(value = va_arg( parms , template * );)還好好的,就是剛才把 template添加了一個參數(shù)啊。

后來發(fā)現(xiàn)是因為va_arg是一個宏,她定義在/usr/lib/gcc/i386-redhat-linux//include/stdarg.h中,在宏展開是把"template"中的逗號當成宏參數(shù)分隔符了,這樣在編譯器看來va_arg就有3個參數(shù),和頭文件中的宏定義參數(shù)個數(shù)不符合,所以報出了`va_arg'沒有定義。

解決方法:
typedef template * temp_ptr;
//也可以用#define temp_ptr template *
//因為在外層宏(va_arg)展開時,自己定義的這個內(nèi)層宏還沒有展開,
//所以不會出現(xiàn)剛才上面那個問題。
value = va_arg( parms , temp_ptr );

搞定。哎,宏啊宏



本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u2/86948/showart_2057449.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP