为了实现跨平台,在C语言中,可以通过宏对已经存在的函数进行重新定义。

例如,在Windows中,具有itoa这个api函数用于数字转换为字符串:

#ifdef WIN32

#define itoa(intSource, strTarget) itoa((intSource), (strTarget), 10);

#else

#define itoa(intSource, strTarget) sprintf((strTarget), "%d", (intSource));

#endif

上面的宏定义中对Windows中的itoa函数进行了同名宏替换。

也就是说,在以后的编码过程中,itoa()中的参数只有两个,而不是原来的三个。

但上述同名宏替换需要注意一点:就是头文件的加载顺序。必须保证原函数所在头文件要在宏定义之前被加载,否则会报错。即在这段宏定义之前应先#include (itoa函数定义所在头文件)。

文件清单:

transplant.h

#ifndef _TRANSPLANT_H_

#define _TRANSPLANT_H_

#include

#ifdef WIN32

#define itoa(intSource, strTarget) itoa((intSource), (strTarget), 10);

#else

#define itoa(intSource, strTarget) sprintf((strTarget), "%d", (intSource));

#endif

#endif

--------------------------------------------------------

在文件ctest.c中

#include void hello();

#define hello() {printf("hello() macro.\n");}

int main()

{

hello();

return 0;

}

void hello()  /* 这里也被宏替换了! */

{

printf("hello() function.\n");

}

c语言同名函数不同参数,C语言 函数同名宏的定义及注意事项相关推荐

  1. 把一个函数作为参数传入到函数中

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> ...

  2. 对C语言 结构指针变量做函数的参数 结构作为函数的参数

    一.结构指针变量做函数的参数 /* 用指针变量作函数参数进行传送,这时由实参传向形参的只是地址,从而减少了时间和空间的开销. */ /* 计算一组学生的平均成绩和不及格的人数,用结构指针变量作函数参数 ...

  3. c语言调色板5个参数,R语言中的颜色以及色板

    可视化数据时,色彩往往是最欠考虑的因素.的确,在一个图中,数据的选择和图表类型的确定才是最重要,最需要确定的因素.但是,适当的选择颜色不仅仅能使数据图的阅读者赏心悦目,而且有助于图中数据关系的呈现,使 ...

  4. c语言malloc引用类型作参数,c语言中动态内存分配malloc只在堆中分配一片内存.doc...

    c语言中动态内存分配malloc只在堆中分配一片内存 .C语言中动态内存分配(malloc)只在堆中分配一片内存,返回一个void指针(分配失败则返回0),并没有创建一个对象.使用时需要强制转换成恰当 ...

  5. c语言二重指针做参数,C语言二重指针的运用

    『摘要』本文主要通过实例展示C/C++中二重指针的用法和用途,对于诸如二叉树等递归定义的数据结构有一定的指导作用. [关键字]:C/C++.二重指针.递归 本人最近想实现一个B+树,虽然对B+树的理论 ...

  6. ES6新特性(函数默认参数,箭头函数)

    ES6新特性之 函数参数的默认值写法 和 箭头函数. 1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式:   从上面的代码可以看出存在一个问题,当传入的参数为0或者 ...

  7. python函数的参数类型,Python函数的主要参数类型

    形式参数(形参) 在定义函数阶段定义的参数称之为形参,相当于变量名 位置形参(普通形参) 位置形参:在函数定义阶段,按照从左到右的顺序定义 特点:必须被传值,且实参与形参按照顺序一一对应,多一个少一个 ...

  8. php函数可变参数列表,PHP函数可变参数列表的具体实现方法介绍

    也许对于PHP初级程序员来说,对于PHP函数并不能完全熟练的掌握.我们今天为大家介绍的PHP函数可变参数列表的实现方法主要是利用func_get_args(). func_num_args().fun ...

  9. python函数可变参数_python中函数的可变参数

    知识回顾: 1.函数关键字参数 2.函数的参数的默认值.必须从右边写到左边. 本节视频教程 文字教程开始: 一.[其实已经用过]可变参数 回顾系统自带的可变参数函数print #系统自带的可变参数函数 ...

  10. JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)

    作为其他变量的值 <!DOCTYPE html> <html lang="zh"><head><meta charset="UT ...

最新文章

  1. 练习2-17 生成3的乘方表 (15 分)
  2. 【高并发】高并发环境下诡异的加锁问题(你加的锁未必安全)
  3. 【ASM学习】普通数据库向ASM实例的迁移(二)
  4. 如何授予Domain User AD加域权限
  5. 生命的真谛不在于你呼吸的次数,而在于那些令你无法呼吸的时刻
  6. 全球及中国塑料薄膜行业产销现状及投资竞争力分析报告2021版
  7. Git 之四 分支管理
  8. Array.prototype.reduce 的理解与实现
  9. gRPC-go 入门(1):Hello World
  10. DP-桥接模式(Bridge Pattern)
  11. python适合自学编程吗-孩子学编程选Scratch还是Python
  12. 如何求最小三元组距离
  13. js无限分级 树_js实现无限级树形导航列表效果代码
  14. nero linux4 序列号,nero9序列号_可以永久使用的nero9序列号
  15. potainer 日志_分享10个优秀的日志分析工具
  16. matlab中if语句的条件,matlabif条件语句
  17. 陈强教授《机器学习及R应用》课程 第四章作业
  18. linux学习资料(转帖收藏)
  19. 计算机DNS服务器错误,找不到服务器或DNS错误怎么办?Win7找不到服务器或dns错误解决方法...
  20. android 禁止第三方相机,谷歌突然宣布,Android 11推出新规,第三方相机软件猝不及防...

热门文章

  1. validate实现表单验证
  2. 关于Fico信用评分
  3. JavaScript---day03
  4. 深入理解傅里叶变换--FT
  5. Sonar介绍及使用
  6. 3D探索——Web 3D哪家强?
  7. android实现渐变进度条,自定义Android进度条ProgressBar颜色的渐变设置
  8. CSS浮动Float——基础知识及兼容性问题
  9. 计算机高手必会的东西,【技巧百科】1分钟学会电脑高手必备的九大技巧,最后一条厉害了!...
  10. 中烟新商盟杨大勇:助力发展小店经济