打印
[牛人杂谈]

C语言函数声明

[复制链接]
731|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahahaheihei|  楼主 | 2018-2-27 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  函数声明和函数定义是不一样的,函数定义是函数的实现过程,函数声明是为了调用函数做准备。
函数声明分为内部函数声明和外部函数声明。
    根据我的理解,内部函数声明就是函数在本文件中定义,并且在本文件中调用,如果函数定义是在函数调用之前,可以不用声明,如果函数定义在函数调用之后,那么需要声明。函数定义在函数明后没有分号,而函数声明在函数名后腰加上分号。内部声明实例如下:
void mx27_send_cmd(U16 cmd);
void mx27_send_addr(U16 addr);
void mx27_set_rbaddr(U16 addr);
void mx27_input_data(void);
void mx27_output_id(void);
void mx27_output_data(void);
void mx27_output_status(void);

沙发
wahahaheihei|  楼主 | 2018-2-27 13:27 | 只看该作者
外部函数声明:函数定义是在外部文件中,而要在本文件中调用,这样,如果没有声明的话就会有警告信息,外部函数声明一般是在源文件对应的头文件中。外部函数声明实例如下:
extern void nand_init(void);
extern U32  nand_read_id(void);
extern void nand_read_page(U32 blockidx, U32 pageidx);
extern U32  nand_program_page(U32 blockidx, U32 pageidx);
extern U32  nand_erase_block(U32 blockidx);
extern U32  nand_check_blank(U32 blockidx);
extern U32  nand_mark_badblock(U32 blockidx);
extern U32  nand_is_badblock(U32 blockidx);
extern U32  nand_info_table(void);

使用特权

评论回复
板凳
598330983| | 2018-2-27 14:49 | 只看该作者
这个概念好难理解,多谢分享

使用特权

评论回复
地板
643757107| | 2018-2-27 17:37 | 只看该作者
有时候函数放前面就行了,不用提前声明也可以工作。

使用特权

评论回复
5
jiekou001| | 2018-2-27 19:03 | 只看该作者
学习一下,好像专业一点都要先声明再定义,这样,不管你是放前面还是后面都可以了,如果不然,你必须放调用函数前面。

使用特权

评论回复
6
xinpian101| | 2018-2-27 19:16 | 只看该作者
老师教的时候要求都要这么做的。不过C编译器灵活,

使用特权

评论回复
7
稳稳の幸福| | 2018-2-27 20:23 | 只看该作者
楼主这几个函数是干啥用的。

使用特权

评论回复
8
稳稳の幸福| | 2018-2-27 20:24 | 只看该作者
仅仅是举个栗子?

使用特权

评论回复
9
598330983| | 2018-2-28 15:41 | 只看该作者
这些关键词很重要

使用特权

评论回复
10
小明的同学| | 2018-2-28 21:40 | 只看该作者
终于明白什么是外部函数了。

使用特权

评论回复
11
幸福小强| | 2018-2-28 22:03 | 只看该作者
这个做不好容易报错,特别复杂的工程,一般都要用的

使用特权

评论回复
12
123ycli| | 2018-2-28 22:48 | 只看该作者
.h中申明,.c中定义,遵循这个大原则就好了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

216

主题

3027

帖子

12

粉丝