Dar*_*Boa 7 c linux gcc gcc-warning
我必须将此代码片段从varargs.h更改为stdarg.h,但我不确切知道如何:
#ifndef lint
int ll_log (va_alist)
va_dcl
{
int event, result;
LLog *lp;
va_list ap;
va_start (ap);
lp = va_arg (ap, LLog *);
event = va_arg (ap, int);
result = _ll_log (lp, event, ap);
va_end (ap);
return result;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建它时,编译器说:
error "GCC no longer implements <varargs.h>."
error "Revise your code to use <stdarg.h>."
Run Code Online (Sandbox Code Playgroud)
我需要编译和运行的程序有一些类似的片段,我需要知道如何更改它们.如果你能写一些例子,我会满意的.
maf*_*fso 10
<varargs.h>是一个预标准的C头; 使用<stdarg.h>来代替.差异:
va_start宏的工作方式不同:它有两个参数,正在第一个va_list最后一个命名参数来进行初始化,第二个名字.例:
int ll_log (LLog *llog, ...) {
int event, result;
LLog *lp;
va_list ap;
va_start (ap, llog);
lp = llog;
event = va_arg (ap, int);
result = _ll_log (lp, event, ap);
va_end (ap);
return result;
}
Run Code Online (Sandbox Code Playgroud)
关于va_start:gcc忽略了第二个参数,但没有给出正确的参数不可移植.
你必须包括
#include <stdarg.h>
Run Code Online (Sandbox Code Playgroud)
va_宏语法保持不变.
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |