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 

 

 

 

目录
相关文章
|
1月前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
55 4
|
25天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
23天前
|
C语言
【C语言】头文件命名详解 - 《铁头无敌 ! 》
头文件在C语言编程中起着组织代码和提高代码复用性的作用。标准头文件提供了丰富的库函数,而自定义头文件可以将常用函数、宏定义、类型定义等封装起来,以便在多个源文件中共享。遵循良好的头文件命名和使用约定,有助于编写清晰、易维护的C语言程序。
67 3
|
1月前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
62 11
|
1月前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
27天前
|
算法 C语言
C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项
本文深入讲解了C语言中的文件操作技巧,涵盖文件的打开与关闭、读取与写入、文件指针移动及注意事项,通过实例演示了文件操作的基本流程,帮助读者掌握这一重要技能,提升程序开发能力。
96 3
|
26天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
57 1
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
34 1
|
2月前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
2月前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。