关于extern

来源:互联网 发布:阿里云服务器带宽选择 编辑:程序博客网 时间:2024/06/16 14:14

   一点点心得,分享一下。extern 关键词是C式风格的。extern是用来声明,它告诉编译器以此修饰的变量或函数在其他文件中定义。由于程序是有多个.c 和.h文件链接而成,在一个文件中的定义在其他文件中是不可见。所以就要告诉编译器此函数或变量已在其他文件中定义。所以当你用extern 修饰了一个变量或者函数时,你理应给编译器这个函数或变量一个定义。如果编译器没有找到这个定义则会产生未定义错误。需要警惕的是要将定义与声明区分开。在.h 类的定义里面,变量与函数都是声明式。还有不要再.h文件中定义变量或函数(除特殊情况如类模板时),应为.h文件可能会被包含好多次,而定义只能出现一次,声明可以出现多次,这样会导致重定义的错误。虽然extern 是用来声明的,但是如果你这样来写

 extern int i = 0;

,这个还会被视作i 的定义。但是一般来说不推荐这样来定义。具体的大家可以参考下effective c++ 与c++ primer。

原创粉丝点击