将头文件和实现放在同一个文件中。普通函数与静态函数是有区别的。
静态函数:
//static.h
#ifndef CRND_INCLUDE_CRND_H
#define CRND_INCLUDE_CRND_H
static int porecss(int value);
#endif
#ifndef CRND__CRND
static int porecss(int value)
{
return value++;
}
#endif
//test.cpp
#include "static.h"
int fun(int value)
{
int temp = porecss(value);
return temp;
}
//test2.cpp
#include "static.h"
int fun2(int value)
{
int temp = porecss(value);
return temp;
}
那么此时编译成功:
查看定义可知:static的函数-静态函数 :和修饰全局变量类似特性,只能在本文件中被访问;有的编码规范要求只本文件使用的函数用static修饰。那么此时在编译阶段,会将静态函数存放在.cpp中。
若为非静态函数。在需要用宏控制实现。保证函数定义在整个目标文件中只有一份。如下:
//static.h
#ifndef CRND_INCLUDE_CRND_H
#define CRND_INCLUDE_CRND_H
int porecss(int value);
#endif
#ifndef CRND__CRND
int porecss(int value)
{
return value++;
}
#endif
//test.cpp
#include "static.h"
#define CRND__CRND
int fun(int value)
{
int temp = porecss(value);
return temp;
}
//test2.cpp
#include "static.h"
int fun2(int value)
{
int temp = porecss(value);
return temp;
}
测试结果:
若不用宏控制,则会发生重复定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)