[英]va_start / va_end + vsnprintf issue on Android Lollipop
[英]Can we call va_end without invoking va_start?
如果我的理解是正確的, va_end
被調用以進行清理並且在相同的上下文中, va_end
手冊頁說
va_end用來()
每次調用va_start()都必須與同一函數中相應的va_end()調用相匹配。 在調用va_end(ap)之后,變量ap未定義。 列表的多次遍歷,每個遍歷由va_start()和va_end()括起來都是可能的。 va_end()可以是宏或函數。
因此,如果調用va_start
則顯然需要調用va_end
,但是反向關系是否成立,即va_end
應始終以va_start
?
從C99 7.15.1.3/2 “的va_end
宏”:
如果沒有相應的va_start或va_copy宏調用,或者在返回之前未調用va_end宏,則行為未定義。
不,另一種選擇是va_copy()
。 它們都需要與va_end()
配對。
在其他情況下,沒有必要這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.