很多时候当我看其他人的代码时,我发现有些人包含了一个.h文件,有些人则包含了一个.c/.cpp文件。这两者有什么区别呢?
很多时候当我看其他人的代码时,我发现有些人包含了一个.h文件,有些人则包含了一个.c/.cpp文件。这两者有什么区别呢?
这取决于文件中包含的内容。
#include
预处理指令只是简单地在原始文件中插入引用的文件。
因此,实际的编译器阶段(在预处理器之后运行)看到的是所有插入操作的结果。
头文件通常设计和意图是通过#include
使用。源文件不是这样设计的,但有时候也是有意义的。例如,当您有一个只包含定义和初始化程序的C文件时:
const uint8_t image[] = { 128, 128, 0, 0, 0, 0, ... lots more ... };
那么,使用 #include
将其提供给某些代码是有意义的。它是一个C文件,因为它实际上定义了(而不仅仅是声明)一个变量。也许它被保存在自己的文件中,因为该图像从用于编辑的其他(图像)格式转换为C源。
static
函数原型,它们不是公共的。 - unwindextern int qq;
void f(int);
#define MYDATATYPE double
int qq; // here, the variable is allocated and exported
void f(int x) { printf("%d\n", x); } // the same for function
.h
文件保存函数等的 声明,而.cpp
文件保存实际 定义(调用函数时无需查看)。#include
一个.cpp
文件相当奇怪。 - BoBTFish.c
/.cpp
文件几乎总是会导致严重的问题。 - πάντα ῥεῖ