跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:c:tips:external_name_in_files
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 在多个文件中共享external name的方法 ====== 全局变量和函数经常在多个地方使用,保持其定义与声明的一致性是程序员的责任。编译器没能力发现所有的不一致问题,不一致的后果可能在运行时才暴露。 由于C语言的定义和声明形式很类似,难以区分,编译器会根据一定的规则进行识别。为了配合编译器工作,同时防止编译器行为与我们预想不一致,良好的做法应该是: 1. 在源文件(.c)中定义全局变量,且一个变量只能有一个定义的地方,定义时不加extern。如: <code c> int errcnt; </code> 最好有一个明确的初始化表达式(虽然全局变量会自动初始化),目的是方便编译器识别。如: <code c> int errcnt = 0; </code> 2. 在其他使用到该变量的地方,使用extern表示引用声明,且不能含初始化表达式。如: <code c> extern int errcnt; </code> 为了方便保持一致和维护,该声明最好放在一个头文件(.h)里,如mydef.h。 3. 如果使用了头文件,则所有涉及该变量的源文件都include该头文件,包括定义该变量的源文件,这样做的好处是方便编译器发现定义与声明的不一致。如: <code> #include "mydef.h" </code> 以后变量定义若有改动,只需修改头文件与定义源文件两个地方,其他文件会自动获得新的声明。 \\ 全局函数的做法与变量类似,我们同样在头文件里添加函数的原型(prototype)声明。如: <code c> extern int my_get_size(void); </code> 由于extern是缺省的,所以也可省略: <code c> int my_get_size(void); </code> {{tag>C语言}}
computer/c/tips/external_name_in_files.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部