“va_start”用于具有固定参数的功能va_start(ap,flags);
‘va_start’ used in function with fixed args va_start(ap, flags);
这个看似简单的代码狙击手给了我一个我无法弄清楚的错误:
错误消息是:‘va_start’ used in function with fixed args
va_start(ap, flags);
static inline int sgx_wrapper_open64(const char *pathname, int flags,unsigned int mode) {
va_list ap;
va_start(ap, flags);
if (flags & O_CREAT)
mode = va_arg(ap, mode_t);
else
mode = 0777;
va_end(ap);
int retval;
ocall_open2(&retval, pathname, flags, mode);
return retval;
}
这是因为va_start
(以及所有其他可变参数辅助程序"函数")只能在参数列表以省略号...
结尾的函数中使用。
如果可以,那么您可以像
static inline int sgx_wrapper_open64(const char *pathname, int flags, ...)
{
va_list ap;
va_start(ap, flags);
mode_t mode;
if (flags & O_CREAT)
mode = va_arg(ap, mode_t);
else
mode = 0777;
va_end(ap);
int retval;
ocall_open2(&retval, pathname, flags, mode);
return retval;
}
特别要注意函数参数列表的变化,以及局部变量mode
的添加。
错误消息
"'va_start'用于具有固定参数的函数"是不言自明的。您的函数具有固定的参数列表。 va_start
只能在具有可变参数列表的函数中使用,这意味着它以省略号结尾,例如:
static inline int sgx_wrapper_open64(const char *pathname, int flags, ...)
相关文章:
- 在Google Kick start中提交时出错
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- C++生成文件错误"implicit entry/start for main executable"
- Valgrind 在 QThread::start() 上报告内存泄漏
- 为什么我不能调用 QMetaObject::invokeMethod(&threadObj, &QThread::start, Qt::QueuedConnection)?
- 如何将IEnumerable与Process.Start的输出事件处理程序一起使用?
- QThread start() return value
- 在Qt中获取输出:'QProcess::start()'和'QProcess:readAllStandardOutPut()'
- Android CMake "致命错误: 'bits/libc-header-start.h' 文件未找到"
- 仅在一台计算机上出现"0xc000007b Application Unable to Start Correctly"错误
- QCamera::start给出神秘的"failed to start"日志消息
- 如何设置Visual Studio来调试DLL ("Unable to start program error")
- 一个粒子太多:GL_INVALID_VALUE生成错误。<start> 不满足着色器存储缓冲区的最低对齐要求
- 解析器名称定义为默认值:%start 后"parse"警告野牛
- 将类方法作为 pthread start 函数传递
- 等待多个线程启动,start() 未捕获
- 为什么"Start Debugging"比VC2010中的"attach to process"慢得多?
- 给定 myvector.start() 和 myvector.end(),我想在不复制数据的情况下创建 myvector
- C# DLL 导入失败:"The application has failed to start because its side-by-side configuration is incorrect
- 为什么两个"Start (Without) Debugging"(F5 和 Ctrl+F5)都不创建 CppUnit *.xml 报告文件?