c++源文件.cpp与.cc区别

本文探讨了C++源文件扩展名的历史演变,从早期的.C到现今非Unix系统中广泛使用的.cpp,以及Unix系统中更常见的.cc。文章还讨论了头文件扩展名的混乱状况,以及模板源和内联函数文件的约定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公约。

从历史上看,C ++源文件的后缀是.C。第一次将C ++移植到文件名不重要的系统时,这导致了一些问题。

不同的用户采用不同的解决方案:.cc.cpp.cxx以及其它可能的。今天,在Unix世界之外,它主要是.cpp。Unix似乎.cc更经常使用。

对于头文件来说,情况更加令人困惑:无论出于何种原因,最早的C ++作者都决定不区分C和C ++的头文件,并使用它们.h

如果项目中没有C,这不会引起任何问题,但是当你开始处理这两个问题时,通常是区分C(.h)中可以使用的头文件和不能(.hh或者.hpp)。

另外,在C ++中,很多用户(包括我自己)更喜欢将模板源和内联函数保存在单独的文件中。其中,虽然严格说来一个头文件,往往会另一套约定的(.inl.tcc和可能很多其他的)。

在头文件中,它对编译器没有任何影响。

对于源文件,不同的结尾会导致编译器采用不同的语言。但是这通常可以被覆盖,并且.cc 在VC ++将其识别为C ++之前很久就和VC ++一起使用了。

总结来说:

非UNIX 系统中 

.cpp
Unix 系统中常用.cc
### 解决方案分析 在CMake构建过程中遇到`Cannot find source file: deme01_pub.cpp`错误,通常表明指定的源文件未被正确定位或命名有误。以下是可能的原因及其解决方案: #### 1. 文件名拼写错误 确认`deme01_pub.cpp`是否存在以及其实际名称是否`CMakeLists.txt`中的定义一致。如果存在拼写错误,则需修正文件名或更新`CMakeLists.txt`中的条目。 ```cmake add_executable(plumbing_pub_sub deme01_pub.cpp) ``` 上述语句中,确保`deme01_pub.cpp`确实存在于项目的根目录或子目录下[^1]。 --- #### 2. 路径不匹配 如果`deme01_pub.cpp`位于特定子目录而非当前工作目录,则需要显式声明相对路径或绝对路径。例如: ```cmake add_executable(plumbing_pub_sub src/deme01_pub.cpp) ``` 或者使用通配符自动查找所有`.cpp`文件: ```cmake aux_source_directory(src DIR_SRCS) add_executable(plumbing_pub_sub ${DIR_SRCS}) ``` 此方法可以动态获取`src`目录下的所有源文件并将其添加至目标可执行程序中[^4]。 --- #### 3. 扩展名缺失 当CMake无法识别扩展名时会抛出类似错误。默认情况下,CMake尝试解析多种常见扩展名(如 `.c`, `.cpp`, `.h` 等)。然而,若自定义扩展名未包含在此列表中,则可能导致失败。因此建议验证文件的实际扩展名是否标准[^2]。 --- #### 4. 构建环境配置问题 有时即使文件存在且路径无误,仍可能出现此类错误。这可能是由于构建环境中某些依赖项丢失所致。例如,在调用第三方库时未能正确定位必要的配置脚本(如 `<package>Config.cmake` 或 `Find<Package>.cmake`),从而影响整个流程正常运行[^3]。 对于这种情况,可以通过以下方式排查: - 检查是否有遗漏的关键包; - 设置相应的 `_DIR` 变量指向正确的安装位置。 示例代码片段如下所示: ```cmake set(Qt5_DIR "/path/to/Qt5") find_package(Qt5 REQUIRED COMPONENTS Core Widgets) include_directories(${Qt5_INCLUDE_DIRS}) target_link_libraries(plumbing_pub_sub Qt5::Core Qt5::Widgets) ``` 以上操作能够帮助加载所需模块,并进一步完善链接过程。 --- ### 完整修复后的 CMakeLists.txt 示例 假设项目结构如下: ``` project_root/ ├── CMakeLists.txt └── src/ └── deme01_pub.cpp ``` 对应的`CMakeLists.txt`应编写为: ```cmake cmake_minimum_required(VERSION 3.0) # 设定工程名称 project(plumbing_pub_sub) # 添加源码所在目录 aux_source_directory(src SRC_FILES) # 创建可执行文件 add_executable(plumbing_pub_sub ${SRC_FILES}) # 如果涉及外部库,请补充相应部分 # set(<PACKAGE>_DIR "<PATH>") # find_package(<PACKAGE>) # include_directories(${<PACKAGE>_INCLUDE_DIRS}) # target_link_libraries(plumbing_pub_sub <LIBRARIES>) ``` --- ### 总结 通过逐一排除潜在原因——包括但不限于文件名准确性、路径设定合理性及构建工具链兼容性等方面的问题,最终得以妥善解决`cannot find source file`这一类典型报错现象。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值