C语言默认参数值的实现

from http://blog.csdn.net/pipisorry/article/details/25437893

C语言中没有参数默认值的概念,可以利用宏来模拟参数默认值:

(对于有多个参数的函数,调用时需要将参数列表中的每个 " , "写出来,不过这样就可以把默认参数放在非默认参数之前)

以下代码在c下是不能通过的:

定义fun():

int fun(int a, int b = 10)                         ...                   ...

{                                             ....     ...           ...     ....

return a+b;

}                                                    ..                  ..

主函数代码:                                           ....        ....

int main()                                                   ......

{

printf("%d\n",fun(10));

return 0;

}

..............................................................

编译时 fun(10) 调用会出错。注意这个代码在C++并不会错。

..............................................................

用宏改进后代码:

#include <stdio.h>

#define funi(a) fun( a, 10)

int fun(int a,int b )

{

return a+b;

}

int main()

{

int a = 10;

printf("%d  %d\n",fun(a,10),funi(a));

return 0;

}

结果: 20 20

[cpp] view
plain
copy

  1. #include <stdio.h>
  2. #define DEFARG(name, defval) ((#name[0]) ? (name + 0) : defval)
  3. int _f1(int i)
  4. {
  5. return 2*i;
  6. }
  7. #define f1(arg0) _f1(DEFARG(arg0, 0))
  8. int _f2(int i, int j)
  9. {
  10. return i + j;
  11. }
  12. #define f2(arg0, arg1) _f2(DEFARG(arg0, 0), DEFARG(arg1, 1))
  13. int main()
  14. {
  15. printf("%d\n", f1());
  16. printf("%d\n", f1(1));
  17. printf("%d\n", f2(,));
  18. printf("%d\n", f2(2,));
  19. printf("%d\n", f2(, 3));
  20. printf("%d\n", f2(4, 5));
  21. return 0;
  22. }
#include <stdio.h>
#define DEFAULT 40      /*默认参数值*/
#define FUN(A) fun(#A##"-")    /*用于实现默认参数的宏*/

int f(int n)  /*用于实验默认参数的函数*/
{
 return printf("%d\n",n);
}
int fun(const char *a)    /*确定函数调用的函数,返回值类型要和实际需要调用的f()函数返回值类型一致*/
{
 int n; /*变量的类型要和f()函数参数的类型一样*/
 if (a[0]==‘-‘) n=DEFAULT;
 else sscanf(a,"%d",&n);

 return f(n);

}
int main(void)
{
 FUN();
 FUN(67);
 return 0;
}

ps:

如果是有头文件的话:

getStr.h

#define getStr() _getStr( "TestFun.txt" );//set default filename in .c

void _getStr(char filename[]);

getStr.c

void _getStr(char filename[]){

...

}

main.c

#include "getStr.h"

void main(){

getStr();

}

ref:

http://blog.csdn.net/broook/article/details/7208408

http://nonoob.is-programmer.com/posts/36769.html

http://www.myexception.cn/c/232391.html

http://wenku.baidu.com/view/1ffed5d86f1aff00bed51eea.html

http://blog.csdn.net/broook/article/details/7208408

from http://blog.csdn.net/pipisorry/article/details/25437893

C语言默认参数值的实现

时间: 2024-10-07 05:25:41

C语言默认参数值的实现的相关文章

C++默认参数值函数

1.默认参数值的函数 C++语言允许在定义函数时给其中或某些形式参数(形参)指定默认值,方法就是在相应的形参后面写上“=默认值”,如果省略了对应位置上的实参的值,则在执行被调函数时以该形参的默认值进行运算. 本人自学,教材可能有点老,有问题的话求大家指正!!!谢谢!!! 2.默认参数值函数注意事项 默认函数一般在函数声明中设置.如果程序中既有函数声明又有函数定义,则定义函数时不允许再定义参数的默认值:如果程序中只有函数定义而没有函数声明,则默认参数才可以出现在函数定义中: 默认参数的顺序.如果一

为javascript设置默认参数值

javascript(js)中如何为函数设置默认参数值,下面提供几种方法供参考. 第一种方法: function example(a,b){ var a = arguments[0] ? arguments[0] : 1;//设置参数a的默认值为1 var b = arguments[1] ? arguments[1] : 2;//设置参数b的默认值为2 return a+b; } 注意以上函数也可写作如下: function example(){ var a = arguments[0] ?

C语言默认參数值的实现

from http://blog.csdn.net/pipisorry/article/details/25437893 C语言中没有參数默认值的概念,能够利用宏来模拟參数默认值: (对于有多个參数的函数,调用时须要将參数列表中的每一个 " , "写出来,只是这样就能够把默认參数放在非默认參数之前) 下面代码在c下是不能通过的: 定义fun(): int fun(int a, int b = 10)                         ...                

android中设置默认语言 默认时区

全志平台配置文件路径: android4.2\device\softwinner\wing-common\ProductCommon.mk 系统语言默认中文配置如下 系统语言默认英语配置如下: 其它国家语言与时区详解参考: 1. 设置默认时区 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai\ 注:搜索"persist.sys.timezone",并更改其值 persist.sys.timezone值域

函数的默认参数值

给函数设置默认参数值有以下方法: 在javascript中如何为函数设置默认参数值,下面提供几种方法供大家参考.第一种方法: function example(a,b){   var a = arguments[0] ? arguments[0] : 1;//设置参数a的默认值为1    var b = arguments[1] ? arguments[1] : 2;//设置参数b的默认值为2    return a+b; } 注意以上函数也可写作如下: function example(){

C++——带默认参数值的函数

函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认参数值. int add(int x = 5,int y = 6) { return x + y;} int main() { add(10,20);//10+20 add(10);//10+6 add();//5 + 6 } 默认参数值的说明次序 有默认参数的形参必须在形参列表的最后,也就是说默认参数值的右面不能有无默认值的参数,因为调用时实参与形参的结合是从左到右的顺序. int add(int x,

Python 默认参数值

Python 默认参数值,对于一些函数来说,你可能为希望使一些参数可选并使用默认的值,以避免用户不想为他们提供值的情况.默认参数值可以有效帮助解决这一情况.你可以通过在函数定义时附加一个赋值运算符(=)来为参数指定默认参数值. 要注意到,默认参数值应该是常数.更确切地说,默认参数值应该是不可变的——这将在Python教程后面的章节中予以更详细的解释.就目前来说,只要记住就行了. 案例(保存为 function_default.py): def say(message, times=1): pri

P5多语言默认语言不生效BUG的解决办法

下面代码覆盖 thinkPhp/library/think/Lang.php 里面的detect()自动检测语言方法 /** * 自动侦测设置获取语言选择 * @access public * @return string */ public static function detect() { // 自动侦测设置获取语言选择 $langSet = Config::get('default_lang'); if (isset($_GET[self::$langDetectVar])) { //

c 语言默认什么编码

C语言是没有编码的.它的编码就是平台的默认编码.比方说在windows 上汉字编码用gb2312 或者 说cp936(GBK一般的windows默认代码页,windows分为不同的代码页,可以查看一下MSDN).http://msdn.microsoft.com/zh-cn/goglobal/cc305153(en-us).aspx C里char 就是一个字节.你定义一个汉字,比方说 char *p=“中”C语言用两个字节来存储;p指向的两个字节存储的就是‘中’的gb编码.分别是‘\xd6\xd