extern
参考:extern声明变量详解
变量的声明:
int data; // 这样既声明了data同时也定义了data
extern int data; // 只声明而不定义
函数的声明:
void hello(); // 函数的声明
extern void hello(); // 也是函数的声明,和void hello(); 一模一样。 参考:https://blog.csdn.net/weixin_38145317/article/details/86496041
// extern void hello(); 仅仅是暗示这个函数可能在别的源文件里定义。
// 如果在函数定义的地方带有关键字extern,表示该函数会提供给外部文件使用,
// 其实有些编译器是默认每个函数都是extern类型的,反之是static类型。参考:https://developer.aliyun.com/article/638079
extern声明全局变量:
- 头文件中不允许定义全局变量,因为当头文件中定义了全局变量A,则每一个包含了头文件的源文件中会定义一次全局变量A,使得整个代码空间中多次定义了此全局变量A,编译时会出现重定义的错误。
- 一般会在头文件中使用extern对全局变量进行声明,这样其他包含此头文件的源文件就可以使用此全局变量。头文件中只进行了声明,所以必须有且仅有一个源文件中对全局变量进行定义。
extern “c”:让此c++代码按照c语言的方式编译。
使用变量之前必须声明,声明可以有多次,而定义只能有一次。
类的声明和定义
定义一个类时,对于其中的数据成员,不论有无默认值,也不论是static还是非static的,我们只是描述了一个类,注意,仅仅是描述了类,也即,我们只知道它含有哪些类型,如果还定义了函数成员,我们还描述了这种类型的操作。所以类中的成员变量都只是被声明了,并未被定义。
当类中包含static修饰的成员变量,那么就必须在源文件中对static变量进行定义,如下:
// test.h
#pragma once
class A{
public:
static int a; // 声明static成员变量
...
};
// test.cpp
#include"test.h"
int A::a; // 定义static成员变量
int main(){
return 0;
}
原文地址:http://www.cnblogs.com/codingbigdog/p/16791551.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性