C语言在头文件中实现函数定义,可以按如下方法:
新建一个demo.h(也可以为其它文件名)的头文件,在头文件中添加函数定义,如:extern void demo();
新建一个c文件,在文件中将demo.h包含进来:#include“demo.h”,在此文件中将函数的主体写上,如下:
void demo()
{
printf("Hello.");
}
经过上述步骤,即可完成在头文件中实现函数定义。
怎么用宏来定义函数?
内联函数的话,因为里面有循环,所以……
如果宏用的好,可以实现函数的功能,但是宏是单纯的字符替换,用的时候会产生很多麻烦。
有循环也可以使用内联函数的,内联函数实质就是把函数的全部代码写在了调用的地方,省去了函数调用的时间。
在头文件中,如果不使用内联,应该是没有别的方法了。
是不是for在所有循环当中最能兼容inline?
还有,我的KEIL出错……
循环和内联的兼容没有关系的,内联函数只是在编译的时候,使用函数中的代码替换了函数调用,是函数出现一次(就是你的代码中,写了一次内联函数),会耗费一定的内存,并不是调用一次就会耗费内存,在循环中使用的次数对内存没有影,这个跟递归是不一样的。
设计C的人就是把函数的定义设计成写在.c文件里,因为内联比较特殊,才可以在头文件中定义。
只有特别短的函数才适合定义能内联,正常情况是不适用的。
我的KEIL出错!
这样写对吗?
……
inline uchar Binary(char *bin)
{
uint strlong;
strlong=sizeof(*bin)/sizeof(*char);
uint i,r;
bin+=strlong-2; //光-1不行,还得减去空字符
for(i=0;i<=strlong;i++)
{
r=r*2+(*bin=="1");
bin--;
}
}
……
51单片机那块我不是很懂,keil出错我可能是帮不上忙,但是我觉得函数定义就应该在.c文件里,keil出错应该不是把函数定义放在头文件就可以解决的,应该有其他的原因。
本回答被提问者和网友采纳教我咋用宏写代码?
追答好,你要学习用宏写什么?
追问写宏函数
追答简单的一个宏函数,
#define MAX(a,b) ((a) > (b) ? (a):(b))
所有参数最好用()括起来,否则会产生副作用
复杂的
怎样在宏中创建变量?
你不要把宏当作一门语言看待,
在宏创建变量,还有写语句都是使用C语言的规则。
建立一个复杂的宏也是一样的。