有没有一种方法可以在C语言中指定函数的默认参数?
当前回答
不,那是c++语言的特性。
其他回答
不是真的。唯一的方法是编写一个varargs函数,并手动填充调用者没有传递的参数的默认值。
简单的回答:不。
稍微长一点的回答:有一个很老很老的解决方法,你传递一个字符串来解析可选参数:
int f(int arg1, double arg2, char* name, char *opt);
哪里的opt可能包括“name=value”对或其他东西,你会叫喜欢吗
n = f(2,3.0,"foo","plot=yes save=no");
显然,这只是偶尔有用。一般来说,当你想要一个单一的接口到一系列功能时。
你仍然可以在专业程序用c++编写的粒子物理代码中找到这种方法(例如ROOT)。它的主要优点是可以几乎无限期地扩展,同时保持向后兼容性。
你不需要只在c上使用VARARGS,下面是一个例子。
int funcA_12(int a1, int a2) { ... }
#define funcA(a1) funcA_12(a1, 0)
这个答案与上面的两个函数方法非常相似,但在这种情况下,您使用的是定义参数的函数名宏。
为什么我们不能这样做呢?
给可选参数一个默认值。这样,函数的调用者就不一定需要传递实参的值。参数接受默认值。 很容易,这个参数对客户端来说是可选的。
如。
Void foo(int a, int b = 0);
这里b是可选参数。