C语言项目中头文件/代码文件的组织问题(使用VC6.0)-阿里云开发者社区

开发者社区> 夏春涛> 正文

C语言项目中头文件/代码文件的组织问题(使用VC6.0)

简介: 个人备忘:   1.新建一个文本文件命名为main.c,使用VC6.0打开并编译,VC6.0会在当前文件夹下自动创建“工作区间”和“工程”文件,如:main.dsw,main.dsp等;然后就可以在“工程”下新建或添加你的.c和.h文件。
+关注继续查看

 

个人备忘:

 

1.新建一个文本文件命名为main.c,使用VC6.0打开并编译,VC6.0会在当前文件夹下自动创建“工作区间”和“工程”文件,如:main.dsw,main.dsp等;然后就可以在“工程”下新建或添加你的.c和.h文件。

 

2.消灭头文件被多次include导致的错误。在每个头文件中加上如下的定义:(假设头文件的名字为MyDemo.h)

#ifndef MY_DEMO_H

#define MY_DEMO_H

 

//...

 

#endif // MY_DEMO_H

 

3.文件后缀名不要混用.cpp,只使用.c/.h。如果是使用VC6直接创建的C++项目,建议后缀名统一用.cpp,总之不要混用。

 

4.头文件中一般只包含必要的全局类型/变量定义和函数接口定义。关于函数接口定义,要思考清楚哪些函数是要提供给其它模块使用的,哪些是本模块内部使用的,只需把对外的(供外部模块使用的)函数接口定义在头文件中即可。不对外公开的函数,可用static定义之。

 

5.一个完整代码示例:

main.c

 

#include "stdio.h"

#include "myfun1.h"
#include "myfun2.h"

void main()
{
    //加减法测试
    test_add_minus(92);

    //乘除法测试
    test_multiply_divide(93);

    printf("Please Press [Enter] to Exit..\n\n");
    getchar();
}

 

myfun1.h

 

#ifndef _MYFUN1_H
#define _MYFUN1_H

//加减法测试
void test_add_minus();


#endif

 

 

myfun1.c

 

#include "stdio.h"
#include "myfun1.h"

//加法
static int add(int a, int b)
{
    return (a+b);
}

//减法
static int minus(int a, int b)
{
    return (a-b);
}

//加减法测试
void test_add_minus(int a, int b)
{
    int m = add(a, b);
    int n = minus(a, b); 
    printf("a+b=%d\n\n", m);
    printf("a-b=%d\n\n", n);
}

 

myfun2.h

 

#ifndef _MYFUN2_H
#define _MYFUN2_H
 
//乘除法测试
void test_multiply_divide(int a, int b);


#endif

 

myfun2.c

 

#include "stdio.h"
#include "myfun2.h"

//乘法
static int multiply(int a, int b)
{
    return (a*b);
}

//除法
static int divide(int a, int b)
{
    return (a/b);
}

//乘除法测试
void test_multiply_divide(int a, int b)
{
    int m = multiply(a, b);
    int n = divide(a, b); 
    printf("a*b=%d\n\n", m);
    printf("a/b=%d\n\n", n);
}

 

6.头文件应是函数功能模块的组织,就像面向对象编程中的一个类的定义一样。为避免代码文件过大,函数功能又能有效组织,可以将多个代码文件对应一个头文件。这里还是要从功能组织去思考,或者说从函数接口的组织去思考,头文件应是将相似的功能函数定义在一起,便于查找或梳理相似功能的函数。这时,与单个头文件对应的多个代码文件很像C#语言中的分部类定义,呵呵。7中是对5中的代码改进后的完整示例。

 

7.一个完整代码示例(多个代码文件对应一个头文件):

main.c

 

#include "stdio.h"

#include "myfun.h"

void main()
{
    //加减法测试
    test_add_minus(92);

    //乘除法测试
    test_multiply_divide(93);

    printf("Please Press [Enter] to Exit..\n\n");
    getchar();
}

 

 

myfun.h

 

#ifndef _MYFUN_H
#define _MYFUN_H

//加减法测试
void test_add_minus();

//乘除法测试
void test_multiply_divide(int a, int b);

#endif

 

 

myfun1.c

 

#include "stdio.h"
#include "myfun.h"

//加法
static int add(int a, int b)
{
    return (a+b);
}

//减法
static int minus(int a, int b)
{
    return (a-b);
}

//加减法测试
void test_add_minus(int a, int b)
{
    int m = add(a, b);
    int n = minus(a, b); 
    printf("a+b=%d\n\n", m);
    printf("a-b=%d\n\n", n);
}

 

 

myfun2.c

 

#include "stdio.h"
#include "myfun.h"

//乘法
static int multiply(int a, int b)
{
    return (a*b);
}

//除法
static int divide(int a, int b)
{
    return (a/b);
}

//乘除法测试
void test_multiply_divide(int a, int b)
{
    int m = multiply(a, b);
    int n = divide(a, b); 
    printf("a*b=%d\n\n", m);
    printf("a/b=%d\n\n", n);
}

 

 

 作者:夏春涛 xchuntao@163.com 

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
中文自然语言处理工具集:分词,相似度匹配
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 分词工具 结巴分词 https://github.
1558 0
VS2010无法保存项目文件(.csprj)的问题解决方法
VS2010无法保存项目文件(.csprj)的问题解决方法   【出错提示】保存项目文件“XXX”时出错。类没有注册。正在查找具有CLSID的对象:{D9B3211D-E57F-4426-AAEF-30A806ADD397}。
968 0
2014秋C++第13周项目6参考-体验文件操作
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。  【项目6-体验文件操作】数据下载链接(1-预备)阅读并理解附后的《文件操作初体验》(必要时运行这些程序)。(2-热身)从键盘读入若干名学生的英语成绩,编程求出这次考试的平均成绩,并统计输出优秀人数和
1003 0
使用蓝牙发送文件时需要注意的问题
牙服务注册在蓝牙的Service Database里面,发送文件建立的是RFCOMM的连接,这就需要指定一个channel,类似于TCP/IP的端口,但是具体连接哪一个channel,就需要通过服务查询来获得。
779 0
1-3 - C#语言习惯 - 推荐使用查询语法而不是循环
  C#语言中并不缺少控制程序流程的结构,for、while、do-while和foreach等都可以做到这点。 历史上所有计算机语言设计者都不曾遗漏这些重要的循环控制结构。 不过我们还有一个更好的方式:查询与法(query syntax)。
725 0
使用IntelliJ IDEA 14和Maven创建java web项目
原文:使用IntelliJ IDEA 14和Maven创建java web项目 http://mark.leanote.com/post/%E4%BD%BF%E7%94%A8IntelliJ-IDEA-14%E5%92%8CMaven%E5%88%9B%E5%BB%BAjava-web%E9%A1%B9%E7%9B%AE 安装Maven 下载安装 去maven官网下载最新版。
1283 0
C语言项目中头文件/代码文件的组织问题(使用VC6.0)
个人备忘:   1.新建一个文本文件命名为main.c,使用VC6.0打开并编译,VC6.0会在当前文件夹下自动创建“工作区间”和“工程”文件,如:main.dsw,main.dsp等;然后就可以在“工程”下新建或添加你的.c和.h文件。
898 0
+关注
夏春涛
曾任教于信息工程大学16年,长期从事计算机软件与信息安全教学科研工作,目前任职于某软件公司从事技术管理工作,擅长架构设计、开发管理,对大数据、分布式颇感兴趣。
271
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载