社区
C语言
帖子详情
头文件里没有写函数声明,该函数可以在其它文件被调用么?
fify
2006-04-04 11:37:17
例如
example.h 里没有函数test()的声明
但是在example.c里有函数test()的实现
在main.c里有:
#include "example.h"
还调用了test()
这样可行么?我原以为是不可行的,可是今天在一源程序里,就是这么用的,比较纳闷。
谁可以给我一个明确的答复,谢谢。
...全文
945
9
打赏
收藏
头文件里没有写函数声明,该函数可以在其它文件被调用么?
例如 example.h 里没有函数test()的声明 但是在example.c里有函数test()的实现 在main.c里有: #include "example.h" 还调用了test() 这样可行么?我原以为是不可行的,可是今天在一源程序里,就是这么用的,比较纳闷。 谁可以给我一个明确的答复,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
DiabloWalkOnTheEarth
2006-04-04
打赏
举报
回复
2
C 可以, 未声明的函数被当成 int func(); , 一般会有个警告 , C++ 不行...
fify
2006-04-04
打赏
举报
回复
也没有用extern来声明该函数
屋顶上的老猫
2006-04-04
打赏
举报
回复
使用了extern来声明了此函数!
fify
2006-04-04
打赏
举报
回复
不好意思,这是一个很大的工程,不方便贴出来
ouyh12345
2006-04-04
打赏
举报
回复
应该不行。
把那个源程序贴出来。
blh
2006-04-04
打赏
举报
回复
yes, but it is not commended
jixingzhong
2006-04-04
打赏
举报
回复
发错了 ~
不好意思 ....
打开的帖子多了 ...
------------
如果 楼主使用的是 C++ 环境,
这个默认就不存在了 ...
jixingzhong
2006-04-04
打赏
举报
回复
typedef struct _TP_DELIVER_HEAER
{
int TP_RP:1;
int TP_UDHI:1;
int TP_SRI:1;
int :2;
int IP_MMS:1;
int TP_MTI:2;
int TP_OA:8;
} TP_DELIVER_HEAER;
sizeof(TP_DELIVER_HEAER) 是两个字节 ...
32位环境下 因为 int 是4字节的,
所以最后会对齐到 4 ,
结果得到 4 字节 ....
jixingzhong
2006-04-04
打赏
举报
回复
C 下默认extern的 ...
源
文件
没有
对应的
头
文件
,其中
函数
是否可以被
调用
在移植ThreadX操作系统的时候,发现HAL库时间基准
文件
stm32h7xx_hal_timebase_tim.c并
没有
对应的
头
文件
,其中定义的HAL_Delay
函数
如何在其他
文件
中
调用
。通过Go To Reference发现,此stm32h7xx_hal_timebase_tim.c
文件
里
面定义的
函数
,声明在其他
头
文件
中,且另外一个源
文件
有该
函数
的弱定义。例如:HAL_Delay
函数
在stm32h7xx_hal_timebase_tim.c
文件
中有定义 /* **********************
C++如何
调用
头
文件
里
的static类型
函数
类型
函数
是一个私有
函数
,那么它只能在类的内部被
调用
,而不能在其他源
文件
中被
调用
。如果需要在其他源
文件
中
调用
这个
函数
,可以将它改为公共
函数
。类型
函数
,需要在源
文件
中包含这个
头
文件
,并在同一源
文件
中定义一个
函数
,然后在这个
函数
中
调用
头
文件
中的。类型
函数
是一个类的私有
函数
或静态
函数
,只能在类的内部或者同一源
文件
中被
调用
。要
调用
一个
头
文件
中的。类型
函数
,因此我们可以直接通过类名。例如,假设我们有一个
头
文件
。
头
文件
,然后定义了一个。来
调用
它,而不需要创建。在这个例子中,我们在。
能否在
头
文件
中放置
函数
定义?
语法上是可以这样做的,但是在编程规范中并不鼓励这样做。 成员
函数
一般是不可以在
头
文件
中定义的,只能在
头
文件
中声明。因为
函数
只能有一次定义,而可以有多次声明,当
头
文件
被多次包含的时候,如果
头
文件
中有
函数
定义就违背了这个原则 #ifndef XXX_H #define XXX_H class CA { … } #endif 如果
头
文件
中
没有
这样定义的话,多次包含一样编译不通过. 成员
函数
在不在
头
文件
中...
VS编译器:多个cpp
文件
调用
写
在
头
文件
中的
函数
出现的链接器报错 解决方案
错误原因:cpp
文件
调用
写
在
头
文件
中的
函数
,相当于将
函数
复制粘贴到cpp
文件
中,而多个cpp
文件
的
调用
会使得多个
函数
复制粘贴,从而使vs链接器认为
函数
重复定义,而不知
调用
哪个
函数
而报错。 方案一:在
头
文件
中的
函数
类型名前加上static,使得每一个cpp
文件
调用
同一个
函数
时,其得到的版本其实不同。 方案二:在
头
文件
中的
函数
类型名前加上inline,相当于将
函数
如何实现的代码给cpp
文件
,就不会使得编译器认为这是在
调用
函数
。 方案三:只在
头
文件
中保留
函数
声明
,
函数
具体的实现代码拷贝一次...
编程好习惯4——在
头
文件
中提供
函数
声明
函数
声明
最好放在
头
文件
中,并在源
文件
中定义。把
函数
声明
直接放到每个使用该
函数
的源
文件
中,这可能是大家希望的方式,而且也是合法的。但问题在于这种用法比较呆板而且容易出错。解决的方法是把
函数
声明
放在
头
文件
中,这样可以确保对于指定
函数
其所有声明保持一致。如果
函数
接口发生变化,则只要修改其唯一的声明即可。定义
函数
的源
文件
应包含声明该
函数
的
头
文件
。将提供
函数
声明
头
文件
包含在定义该
函数
的源
文件
中,可使编译器能
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章