文档章节

关于C语言项目工程文件目录组织结构

01010101010101010101
 01010101010101010101
发布于 2014/01/03 21:09
字数 622
阅读 892
收藏 1

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文件的工作
                ----------------------------------------------->>>>>>>>>>>>>>>>再共同完成可执行文件

© 著作权归作者所有

共有 人打赏支持
01010101010101010101
粉丝 23
博文 93
码字总数 68915
作品 0
长宁
高级程序员
Linux GNU C语言项目组织工具 autotools 使用

转载说明: 虽然没有开发过C语言的大型项目,但一直对C语言的项目组织比较感兴趣。当然不是Visual Sutdio,CodeBlock 这类IDE的项目组织,而是GNU 系列开源工具。 如果在用过Linux系统就知道...

从前
2012/10/22
0
2
老男孩第十四期Python学习班之Day04

一、复习 略 二、鸡汤 视频文件播放不了 三、装饰器 1、装饰器: 定义:本质是函数,功能是装饰其他函数。就是为其他函数添加附加功能 原则:1、不能修改被装饰的函数的源代码 2、不能修改被...

Asktao
2016/08/18
496
0
初学Python——软件目录结构规范

为什么要设计好目录结构? 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等。从而非常快速的了解这个项目。 可维护...

学霸初养成
05/13
0
0
最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld

===================================================== 最简单的基于FFmpeg的移动端例子系列文章列表: 最简单的基于FFmpeg的移动端例子:Android HelloWorld 最简单的基于FFmpeg的移动端例...

leixiaohua1020
2015/07/25
0
0
NDK开发笔记—ndk环境安装及其搭建

ndk环境安装及其搭建 软件下载 链接:pan.baidu.com/s/1cev9FK 密码:7yab 当然其他版本的也可以,建议不要用最新的 注意:执行Javah的时候生成头文件是对Java文件所生成的.class进行处理的命...

codeGoogle
2017/09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
3
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部