C语言项目的工程文件目录组织结构探讨
2011年12月29日
经常会在对源代码进行如何组织时犯难:
1)头文件的内容应写些什么?
2)函数的具体实现应放在哪个文件里?是否与头文件放在一处?
3)自定义的头文件(.h)与定义函数(.c)是什么关系
注意:此时你需要有一定的编译原理的基础。
--------------------------------------------------------------------------------
====> 1)头文件里应写入的内容:xxx.h
1)预处理块 :即一些宏的定义相关的#define \#ifndef \#ifdef
2)函数和类结构【声明】
3)头文件开头处的版权和版本声明
// 版权和版本声明见示例 1-1,此处省略。
#ifndef GRAPHICS_H // 防止 graphics.h 被重复引用
#define GRAPHICS_H
#include <math.h> // 引用标准库的头文件
…
#include “myheader.h” // 引用非标准库的头文件
…
void Function1(…); // 全局函数声明
…
class Box // 类结构声明
{
…
};
#endif
====> 2)函数的实现应单独放在一个文件里-------我们称为定义文件 xxx.c
1) 定义文件开头处的版权和版本声明
2) 对一些头文件的引用-----------可能引用标准的头文件,或是自定的头文件(这里所引用头文件的要点是:只要你能完成些功能即可,不管你是什么手段)
3) 程序的实现体(包括数据和代码)------
// 版权和版本声明见示例 1-1,此处省略。
#include “graphics.h” // 引用头文件
…
// 全局函数的实现体
void Function1(…)
{
…
}
====> 3) 头文件与函数定义没有直接的关系,(我们理解成好像各自为政的样子----------各作各的就行,函数定义最后是生成相应的库文件,即其也只编译到.o文件即可)
1)需要明白头文件的功能:
1)最主要是完成编译阶段的功能。 -I来完成
2)库文件--------当需要进行链接时,才会来查找对应函数的实现。 此时由 -l -L来共同完成
============================>说白了,在我们需要编写一个较大的可执行代码主要分为:
1)编写头文件
2)编写函数定义文件
3)编写可执行文件===即我们的main函数相关的代码。
编写时:
1)、2) =====》共同完库文件的工作
1)、3) =====》共同完成main文件的工作
----------------------------------------------->>>>>>>>>>>>>>>>再共同完成可执行文件
推荐阅读