C语言,声明和实现放在头文件中

文章讲述了在C++编程中,静态函数与普通函数的区别。静态函数限制了其在定义文件内的可见性,而普通函数如果不通过宏控制可能会导致重复定义的问题。文中通过示例展示了如何在头文件中声明和在源文件中实现这两种类型的函数。
摘要由CSDN通过智能技术生成

将头文件和实现放在同一个文件中。普通函数与静态函数是有区别的。

静态函数:

//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;
}

 测试结果:

 若不用宏控制,则会发生重复定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值