c语言用宏对函数重命名 宏定义函数名替换
如何用c语言重命名
可以通过C库函数rename实现。
公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出黔西免费做网站回馈大家。
头文件:stdio.h
原型::int rename(char *oldname, char *newname);
功能: 给一个文件重命名,从原始的oldname改成新名字newname。如果oldname和newname带有路径,且所在文件夹不同,那么用该函数可以实现文件移动功能。删除成功返回0,否则返回-1。
使用rename需要注意:
一、重命名文件:
如果newname指定的文件存在,则会被覆盖。
如果newname与oldname不在一个目录下,则相当于移动文件。
二、重命名目录:
如果oldname和oldname都为目录,则重命名目录。
如果newname指定的目录存在且为空目录,则先将newname删除。
对于newname和oldname两个目录,调用进程必须有写权限。
重命名目录时,newname不能包含oldname作为其路径前缀。例如,不能将/usr更名为/usr/foo/testdir,因为老名字( /usr/foo)是新名字的路径前缀,因而不能将其删除。
c语言宏定义如何用?用宏定义有什么优点?
主要用于函数重定义,通用性,可以用一个变量符号替代另一个变量符号
格式:#define
M(x,y)
x+y
在主程序里写入z=M(6,9);等价于z=6+9;而写成z=(6-8,9);等价于z=6-8+9
;直接代入
还有就是
:#define
Uint
unsigned
int
即用
Uint
代替unsigned
int
便于书写,还有就是不同操作系统的通用变量识别
C局部变量和宏定义重名
是可以重名的,只不过局部变量可以覆盖全局的,就是在局部变量的范围内全局变量不起作用
局部会屏蔽全局。要用全局变量,需要使用 "::" ;
局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些
编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那
个局部变量的作用域就在那个循环体内。
扩展资料
C语言中全局变量和局部变量的区别是他们的作用域不同,全局变量是整个C程序,局部变量是定义所在的大括号内,同一个作用域内不能定义两个同类型同名的变量,因为编译会报错。
由1个或者多个C文件组成的工程中,可以定义和全局变量同名同类的局部变量,但是不提倡这样使用,因为此时变量的值和变量被调用的位置有关系。
使用全局变量时,需要先用extern关键字声明,全局函数也是用相同的关键字。
如何解决C语言,函数名与宏冲突
如果二者作用域没有交叉,那么可以把函数名定义为static。
或者在使用宏的地方,不要声明该函数。
否则,只能改掉其中一个名字。
推荐宏名用全大写字母。
函数名用全小写字母或者单词开头字母大写。 这样就不会冲突了。
而且根据名字 一眼就可以看出来是宏还是函数。
c语言中如果定义了一个函数,那么用宏定义可以替换名称吗
会出错吧,宏定义替换的是一个常数,如果是用宏来计算什么的话,也是将函数过程给放上去,得出值后被宏名替换,直接替换函数名是不可行的
C++ 能否对一个外部函数进行重命名
两种方法:
1 使用宏定义,如:
#ifndef ran
#define ran __mlcd_ran
#endif
2 添加一个头文件,声明一个函数指针,并在 .cpp 中定义,并在主函数中初始化,如:
// Type.h
// 假设 __mlcd_ran 的函数原型为:void __mlcd_ran(int);
extern void (*ran)(int);
// Main.cpp
void (*ran)(int); // 定义全局变量
int main()
{
ran = __mlcd_ran; // 初始化
...
return 0;
}
// 然后在任何需要调用的 .cpp 文件中包含此头文件,如:
#include "Type.h"
ran(100); // 有的编译器编译不过
*ran(100);
综上所述,用宏定义比较好,Win32 API 里面有大量的宏定义,比如宽字节函数与多字节函数为了统一。
当前文章:c语言用宏对函数重命名 宏定义函数名替换
文章源于:http://pwwzsj.com/article/hioiso.html