多文件项目及编译过程

本文详细介绍了C++中多文件项目的组织结构,包括extern的使用、头文件和include的处理、宏定义#define的解释以及main函数的参数和返回值。讲解了extern如何声明外部函数和全局变量,头文件的创建和使用,以及#define宏定义的两种用法和潜在错误。同时,文章还讨论了main函数的不同形式,特别是参数的意义和来源。
摘要由CSDN通过智能技术生成

多文件项目及编译过程


1多文件项目,extern的用法

项目一般是由多个cpp文件组成的
一个例子:让用户从控制输入一个值,表示圆的半径。程序 计算并输出圆的面积。
// other.cpp
double get_area(double r)
{
return 3.14 * r * r;
}

项目一般是由多个cpp文件组成的
// main.cpp
extern double get_area(double r);
int main()
{
double r;
printf(“enter r: “);
scanf(”%lf”, &r);
double area = get_area®;
printf(“result: %.3lf\n”, area);
return 0;
}

使用extern
extern, (external),外部的
extern: 声明外部函数
在A.cpp中使用B.cpp中的函数,需要extern声明
extern: 声明外部全局变量
在A.cpp中访问B.cpp中的全局变量,需要extern声明
extern的作用84JI: 告诉编译器,在某个cpp文件中,存在这么一个 函数/全局变量。
注:符号(symbol): 把函数名和全局变量名,称为符号。

使用extern
全局变量的声明与定义
声明Declaration
extern int a;
extern double b;
extern float numbers[5];
定义Definition
int a = 10;
double b;
float numbers[5] = {1.0, 1.1 };
注:全局变量的声明语句是不能加初始值的。

使用extern
函数的声明与定义
函数的声明
extern int sum(int, int);
函数的定义
int sum(int a, int b)
{
return a + b;
}
注:函数的声明语句中,关键字extern可以省略。

使用extern
被声明为extern的函数或全局变量,其实在本cpp中定义也是可 以的。
extern的作用: 告诉编译器,在某个cpp文件中,存在这么一个 函数/全局变量。
所以,在本cpp中定义它也是可以的,不是一定要在别的cpp中定 义。

使用extern
注意:
(1) 重定义 multiple definition
多个cpp中,不能定义相同的名字的符号。
具体来讲:
不能定义相同名称的全局变量。
不能定义相同的函数。(相同的函数:指函数名+参数列表均 相同的函数。)
(2) 无定义 undefined reference
你用extern声明了一个函数,并且调用了它。但是在链接过程中, 没有在任何一个cpp中发现它的定义。

项目生成过程
项目生成 build : 分为两步
第一步:编译 compile
将所有的cpp转成obj文件 (obj称为目标文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值