文档章节

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

01010101010101010101
 01010101010101010101
发布于 2014/01/03 21:09
字数 622
阅读 829
收藏 1
点赞 0
评论 0

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
NDK开发笔记—ndk环境安装及其搭建

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

codeGoogle
2017/09/26
0
0
最简单的基于FFmpeg的移动端例子附件:SDL Android HelloWorld

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

leixiaohua1020
2015/07/25
0
0
Android 之 JNI 开发 详解 - NDK从入门到精通

NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub - https://github.com/han1202012/NDKHelloworld.git 一. JNI介绍 1. JNI引入 JNI概念 : Java本地接口, Java Native Interface, 它是一......

SuShine
2016/11/04
92
0
图文教程vs2008+eclipse开始jni教程实例(一)

原创文章,欢迎转载,转载请说明 1、在eclipse中新建一个testJni的工程,新建一个package com.easou.abo.jnitest 2、在com.easou.abo.jnitest下新建一个类Demo,代码如下 package com.easou.ab...

cyper
2013/09/19
0
2
CocoadPods的详解之二:使用CocoaPods管理iOS的第三方类库

上一篇文章介绍CocoaPods的安装,接着就是体验体验CocoaPods。在Desktop/develop文件夹下面新建了一个项目,参考CocoaChina中的一个教程,就是一个完整的天气App,项目名称为SimpleWeather,...

jay603
2016/06/20
37
0
NodeJS开发者-资质分级评判标准

这回须纯属本人杜撰,但也是参考过诸多Node资料之后的断言,仅供参考。 》》初级 独立完成node开发环境在制定系统平台的安装配置;熟悉javascript语言语法规范;熟悉JSON数据结构;了解Commo...

Channely
2015/07/22
0
0
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境【转】

项目建设完成之后的结构: 数据库的表结构如下: 环境建设:搭建Maven环境、Tomcat环境、需要MySql 数据库支持,使用的编程工具Eclipse (这些是前期准备); 开始创建工程: 1.创建一个Mav...

结构好可
2016/10/20
88
1
Maven 快速指南(一)

概念 Maven是什么 Maven 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。 版本 maven有自己的版本定义和规则。 构建 maven支持许多种的应用程序类型,对于每一种支持的应用...

静默虚空
2017/11/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
156
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部