相关疑难解决方法(0)

如何计算传递给接受可变数量参数的函数的参数数量?

如何计算在以下程序中传递给函数的参数的数量:

#include<stdio.h>
#include<stdarg.h>
void varfun(int i, ...);
int main(){
        varfun(1, 2, 3, 4, 5, 6);
        return 0;
}
void varfun(int n_args, ...){
        va_list ap;
        int i, t;
        va_start(ap, n_args);
        for(i=0;t = va_arg(ap, int);i++){
               printf("%d", t);
        }
        va_end(ap);
}
Run Code Online (Sandbox Code Playgroud)

这个程序在ubuntu 10.04下通过我的gcc编译器输出:

234561345138032514932134513792
Run Code Online (Sandbox Code Playgroud)

那么如何找到多少没有.实际传递给函数的参数?

c variadic-functions

39
推荐指数
4
解决办法
4万
查看次数

哪个c方言可以让GCC编译一些乐趣(...)?

编译一些具有函数原型的遗留代码Ac

void somefun(...)
Run Code Online (Sandbox Code Playgroud)

gcc 4.1.2总是说出错误

 error: ISO C requires a named argument before ...
Run Code Online (Sandbox Code Playgroud)

但我无法修改代码,所以我应该使用什么C dialet选项让GCC编译这段代码?

gcc -c A.c ????
Run Code Online (Sandbox Code Playgroud)

c gcc dialect

6
推荐指数
1
解决办法
1086
查看次数

是否可以创建没有参数的C varargs函数?

可能重复:
是否可以在C中具有可变参数函数且没有非可变参数?

是否可以创建没有参数的C varargs函数?

例如:

int foo(...);
Run Code Online (Sandbox Code Playgroud)

我想做类似以下的事情:

list* create_list(...){
    list *mylist = list_create();
    void *current_arg = va_arg(void*);
    while (current_arg != NULL){
        list_add(mylist, current_arg);
        current_arg = va_arg(void*);
    }
    return mylist;
}
Run Code Online (Sandbox Code Playgroud)

c

4
推荐指数
1
解决办法
2158
查看次数

标签 统计

c ×3

dialect ×1

gcc ×1

variadic-functions ×1