C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++程序中添加.c.h方法

C++程序中添加.c.h的实现方法

作者:zxz520zmg

这篇文章主要介绍了C++程序中添加.c.h的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

C++程序中添加.c.h的方法

 方法一

 1、把要添加的.c和.h文件复制到c++程序目录中。  

 2、把.c文件改为.cpp文件  

 3、把.c.h文件都添加到该项目中 就可以使用了 

方法二

 1、项目配置不使用预编译头  

2、.c文件加载到程序需中 

 3、把c语言函数的声明用extern "C"{};中。  

现在最好的写法是:  

 //test.h 
 #ifdef __cplusplus 
 extern "C" { 
 #endif 
 //c语言函数声明写在这 
 #ifdef __cplusplus 
 } 
 #endif 
  //test.c 
  //.c开头出 
 #ifdef __cplusplus 
 extern "C" { 
 #endif 
 #include "test.h" 
 //.c文件内容 
 #ifdef __cplusplus 
 } 
 #endif 
 //.c文件结束 

C/C++中的.h和.c文件

编译器的工作过程

涉及到的函数、结构体、变量等比较多。通常,编写c/c++项目的方式是,有一个main.c文件,该文件的main函数作为接口,调用其他函数。所有其他函数按功能,分别放在不同的.h文件中,这样的方式在编译和运行上肯定是没有什么问题的。

随着项目编写的深入,结构、逻辑以及变量的日趋复杂,总感觉上述方式的实现仍然不够清晰并且会导致一些冗余。忽然记起,在课堂上,老师提到过,.h文件一般用来存放函数声明和变量名,那么为什么我在.h文件中实现函数不会有问题呢?其他.c文件和main.c文件又有什么关系呢?这些,都使我不得不重新思考.h文件和.c文件的作用和关系。

.h文件的由来和弊端

要理清.h文件的作用,我们不妨看看.h文件的由来:

“在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(.cpp)文件。

于是人们将重复的部分提取出来,放在一个新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX这样的语句。这样即使某个声明发生了变更,也再不需要到处寻找与修改了。因为这个新文件,经常被放在.c(.cpp)文件的头部,所以就给它起名叫做“头文件”,扩展名是.h。

在我们语言的初学阶段,往往我们的程序只有一个.c的文件或这很少的几个,这时我们就很少遇到头文件组织这个头疼的问题,随着我们程序的增加,代码 量到了几千行甚至几万行,文件数也越来越多。这时这些文件的组织就成了一个问题,其实说白了这些文件的组织问题从理论上来说是软件工程中的模块设计等等的问题。”(引自c语言项目中.h文件和.c文件的关系)

由上可以看出,.h文件最初就是用来给变量和函数提供一些全局性的声明,这些声明被其他.c文件共享,方便变量和声明的修改,使得大型代码逻辑更清晰更易于维护。因此.h文件中一般是声明,很少有代码的具体实现。

h文件在编译原理

那么为什么在.h文件中实现函数也不会出错呢?在.h文件中实现函数与在.c文件中实现函数有什么区别和联系呢?普通的.C文件和包含main函数的c文件有什么区别和联系呢?

要解决上述问题,首先必须弄清编译器的工作原理。编译器的最终目的是将程序员编写的源代码转换成机器能够识别运行的二进制机器码。

大体上分,可以分为4个步骤:

1.头文件的预编译,预处理

2.词法和语法分析(查错)

3.编译(汇编代码,.obj文件)

4.链接(二进制机器码,.exe文件)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文