多个cpp文件生成so_白话C++编程系列之:多个文件篇

本文介绍了C++编程中多个cpp文件的概念和组织方式,强调了多文件组织对于项目管理和维护的重要性。通过实例展示了如何按照功能或类别划分文件并放置在不同目录下,同时提供了VS2013的编译实践,帮助读者理解和应用多文件管理。
摘要由CSDN通过智能技术生成

我们来简单的复习一个文件的概念:文件是啥?

文件我们这里特指头文件(.h文件, 也有可能是.hpp文件(声明和实现放在一起), .inl文件)和.cpp文件.
文件是组织代码的一种方式.通常.h文件用来写声明(类的,函数等的), .cpp文件用来写实现(类的,函数等的).

C++中的文件在物理上和我们电脑上、手机上、iPad上看到的文件是一样的。
文件都有文件名字,文件的大小,文件的创建时间等属性。
更多的内容请您点开上面文件的链接详细查看。

今天我们来talk about另外一个和文件相关的概念: 多个文件概念。我们由一个文件到多个文件,还是有区别的.
我们已经知道了文件的概念, 理解多个文件的概念会很easy. 多个文件最主要的区别是组织方式

类似我们将我们的电脑硬盘分区(盘),如果只分成一个区(盘),也没有什么可好说的。
如果分成多个区,那么我们就想想到底分成几个区,每个区多大,每个区用来做什么?

我们在写代码,特别是越来越大的项目时, 我们要有组织的将多个文件分类处理,或者分功能处理。

1.多文件是想说啥?


多文件 是指对多个文件的分类或者划分。可以按类别划分,或按功能划分, 分别存放在不同的目录中.

如按类别功能划分.将我们自己声明、定义的常量、功能函数、宏定义等等放在一个目录(文件夹)中,
将用来的库比如boost放在libs目录中, 将编译后的release版本, 和测试用的debug版本放在不同的目录中管理。
这就好比我们将win7装在C:中, 我们将安装包放在 D:中, 将音乐,视频放在E:中一样. 方便我们管理和处理.
这比我们把所有东西放在一个盘里方便管理和维护好多了,即使我们只有一个盘,通常我们也会分成多个目录来管理.
不能让我们的电脑变成一锅粥...

您想想自己平时是不是这么做的?分类就是其中一个处理多个文件或者平时处理多种信息的一种简单、有效的方式。

来个例子:

//D:devjinLabp8_filep9_fileSp9_fileS.cpp//这里的cpp文件就是: p9_fileS.cpp// p8_file.cpp : 白话C++编程之: 多个文件篇///*@Author: Albert 小宁@Web: http://jinLab.com@WeChatOfficalAccount: 小宁静致远@Date: 2017-11-12@KS: https://t.xiaomiquan.com/IeieiEm*/#include #include #include #include "myDefines/globalDefines.h"
f6c770d081f1d61f681e79c462dff13e.png

多个文件的例子

上面的例子中我们把我们的全局定义文件 globalDefines.h 文件放在了 myDefines 这个目录中.

#include "myDefines/globalDefines.h"
1c6e7dbedac827a8a7ab087c3a9ba351.png

myDefines/globalDefines.h

我们将配置文件放在了 config.ini 放在了 config 目录中.

fd8bcff65a937983bd7cf9bae5784c9c.png

config.ini放在config目录下

iostream/string/fstream头文件则放在VS2013的安装目录下的
**c:Program Files (x86)Microsoft Visual Studio 12.0VCinclude **目录中.

a85284693b54e6a989c7e96bd202d0ed.png

iostream

2.多个文件的应用?(举个例子)


其实大家已经看到在上面我们已经举例说明了多个文件的应用, 主要是方便管理和后期维护。这里不在啰嗦了。_

3.多个文件的实践?(动手操作)


看了上面的例子, 您也一定觉得很简单,这不就是我们平时放文件时,建立了不同的目录,然后把不同文件放在不同的目录吗?!
对的,C++中组织多个文件,或者多个函数,多个常量的定义时就是采用相同的方式。
如果您经常组织或者整理您的文件,对这个概念将非常清楚,以及为什么这么做您也一定非常清楚!
您真的太棒了!(道理相通,融会贯通!)

我们现在就用上面举的例子,实践一下.
请打开VS2013或者打开cpp.sh http://cpp.sh来(本次cpp.sh也帮不上你的忙了。它不能组织多个文件)写上如下代码:

头文件: D:devjinLabp9_fileSp9_fileSmyDefinesglobalDefines.h

c88aa8de3010b0d89d0354a02a9d77d2.png

头文件globalDefines.h

#pragma once //防止多次包含同一个头文件 #include #include using namespace std;//找出两个中更大的一个double GetMax( double dblLeft, double dblRight ){ return dblLeft > dblRight ? dblLeft : dblRight;}void printSth( std::string const & str2print ){ std::cout << str2print << std::endl;}class CMyClass{public: //构造函数 CMyClass(){} //析构函数 ~CMyClass(){} //一个打印函数: 声明 inline void print();};//CMyClass::print() 的实现在这个.inl文件中#include "myClassInl.inl"

.cpp文件: 调用处: D:devjinLabp9_fileSp9_fileSp9_fileS.cpp

59d6cf73791a2053e63047dec5e58e5c.png

cpp文件

//D:devjinLabp9_fileSp9_fileSp9_fileS.cpp//这里的cpp文件就是: p9_fileS.cpp// p9_fileS.cpp : 白话C++编程之: 多个文件篇///*@Author: Albert 小宁@Web: http://jinLab.com@WeChatOfficalAccount: 小宁静致远@Date: 2017-11-12@KS: https://t.xiaomiquan.com/IeieiEm*/#include #include #include #include "myDefines/globalDefines.h"int main( int argc, char * argv[ ] ){ printSth( "今天是周日,天气非常Sunny, 祝您周末愉快!" ); std::string strCfgName = "config/config.ini"; std::fstream ifs( strCfgName,std::ios_base::in ); if ( !ifs.is_open() ) { std::cout << "不能打开文件: " << strCfgName << std::endl; ifs.close(); return -1; } string strLine; while ( getline( ifs, strLine ) ) { std::cout << strLine << std::endl; //printSth( strLine ); } ifs.close(); return 0;}

config.ini文件: D:devjinLabp9_fileSp9_fileSconfigconfig.ini

8cf82bdec0b86625b3d12f047658e1d2.png

config.ini文件

url = "http://jinLab.com"google = "https://google.com/ncr"

myClassInl文件: D:devjinLabp9_fileSp9_fileSmyDefinesmyClassInl.inl

5d25cdd72abfcec676f4b6d09ac06cbc.png

myClassInl.inl文件

void CMyClass::print(){ printSth( "I am function print() of class CMyClass!" );}

我的代码结构目录

2c79060da1039efbb96c723ace4afc95.png

代码目录结构

如果使用的是VS2013, 那么我们按F7, 如果没有错误的话, 就会编译生成我们的程序,并且会有下面的输出:
请看,这是程序的输出结果图.

43f6393ce6cb778e24bd35e1a45c1f43.png

vs2013语句: 程序输出

怎么样?哈哈
恭喜您, 今天您和我一起学习了多个文件这个概念.多个文件

多文件 是指对多个文件的分类或者划分。可以按类别划分,或按功能划分, 分别存放在不同的目录中.

如按类别功能划分.我们将自己声明、定义的常量、功能函数、宏定义等等放在一个目录(文件夹)中,
将用来的库比如boost放在libs目录中, 将编译后的release版本, 和测试用的debug版本放在不同的目录中管理。
这就好比我们将win7装在C:中, 我们将安装包放在 D:中, 将音乐,视频放在E:中一样. 方便我们管理和处理.

多个文件的应用多个文件的实践

怎么样?- 多个文件的概念很简单吧?它就是我们平时管理文件的一种方式(道理相同,融会贯通)。
您是如何理解它的?能不能举几个例子? 动手写、组织起来吧.

白话C++编程系列之:下期预告


白话C++编程系列之七: 入口函数篇
* 1. 入口函数是指什么?
* 2. 入口函数应用例子
* 3. 入口实践例子

延伸阅读


常量

在编程中值保存不变的量。修饰常量我们常用const关键字.

//常量iPi的值为3.1415926.double const iPi=3.1415926; 

《白话C++编程系列之: C++入门与实践大纲》

《白话C++编程系列之一: 本质篇》

《白话C++编程系列之二: 变量篇》

《白话C++编程系列之三: 类型篇》

《白话C++编程系列之四: 语句篇》

《白话C++编程系列之五: C++是啥?》

《白话C++编程系列之六: 表达式(语句之爱恨)》

《白话C++编程系列之七: 函数篇》

《白话C++编程系列之八: 文件篇》

如有侵权,请联系删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值