Luc*_*ore 3 c++ casting variadic-functions
最近我遇到了一个函数接受可变数量的参数的问题,并期望最后一个参数是一个空指针.我没有访问它的实现.
将最后一个参数转换为void*有效但直接传入NULL(nullptr不可用)不会:
foo(x,y,(void*)NULL); //okay
foo(x,y,NULL); //crash
Run Code Online (Sandbox Code Playgroud)
国际海事组织这不应该有所作为,但话说回来,我以前错了.你能想出演员会有什么不同的原因吗?或者这只是一个意外(一些不连续或错误的构建或smth.沿着这些线)
提前抱歉,我无法提供更多详细信息.
Oli*_*rth 12
嗯,NULL是C++中的一个整数常量,而(void *)NULL绝对是指针类型.
因此,当插入var-arg列表时,可以想象它们具有不同的大小.所以如果比方说它之后有另一个参数,这肯定会有所不同.如果没有,你最终可能会从var-arg函数中读取半垃圾.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |