c 语言头文件和源文件

总结:

头文件和源程序h结尾的就是头文件,c结尾的就是源文件

把定义和实现分开,就可以通过头文件和源程序分开

在头文件中去定义,在源文件中去实现,然后main方法包含的时候只要包含头文件就可以了。



0:实际项目当中可能由成千上万个源文件,大型项目中会按照不同饿模块氛围多个源文件,例如由客户,订单,商品,购物车等模块,那么就可以按照这些某块定义不同的源文件

讲程序按照模块定义在不同的源文件中,随之而来的问题是,不同文件之间如何共享函数和全局变量。


这里就有了头文件和源文件的划分了。

我们将需要共享的函数,外部变量和一些宏定义声明头文件中,头文件一般以h结尾,
定义(其实就是实现)写在源文件中,源文件一般以c结尾的文件。
当不同源文件之间需要共享函数或者变量是偶,可以通过#include 包含指令包含头文件即可


1: 创建头文件的步骤:

定义(其实就是实现)写在源文件中,源文件一般以c结尾的文件。

当不同源文件之间需要共享函数或者变量是偶,可以通过#include 包含指令包含头文件即可



1: 创建头文件的步骤:

点击File->New->File..选择Header File->取名为Global

然后默认的:防止重复包含的

#ifndef Global_h

#define Global_h

#endif /* Global_h */



2: 创建源文件的步骤:

点击File->New->File..选择C File->取名为Global


3: 如果有一个变量在两个头文件中都进行了宏定义了,那么会采用后来的哪个的值


head1.h:


#ifndef head1_h
#define head1_h

#define TRUE 1
#define FALSE 0

#endif /* head1_h */

head2.h

#ifndef head2_h
#define head2_h

#define TRUE 2
#define FALSE 0

#endif /* head2_h */

main.c


#include <stdio.h>

#include "head2.h"
#include "head1.h"

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    printf("TRUE=%d\n",TRUE);
    return 0;
}


运行结果:
Hello, World!
TRUE=1
Program ended with exit code: 0



4: 这里需要强调的是声明,例如int a;在前面我们并没有区分声明合定哦,其实变量的声明合定义是截然不同的。

变量的声明并不分配内存空间,而定义是要分配内存空间。

要想实现声明,我们要用到另外一个关键字extern,该关键字表明只声明变量,变量的定义可能在其他的源文件中。

例如 extern int a;



5: 头文件的嵌套,头文件中可以包含其他的头文件,看看stdio.h里面其实也包含了其他的头文件


6: 构建一个购物商城:
其实就是简单一点,在h文件中申明,在c文件中定义实现,然后在main中只要倒入h文件就可以了,然后就可以直接使用了

只放一个例子:

global.h

//
//  global.h
//  Market
//
//  Created by 千 on 16/7/24.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#ifndef global_h
#define global_h

typedef struct{
    int cid;
    char name[20];
    int age;
} Customer;

typedef struct{
    int oid;
    char name[20];
} Order;



#endif /* global_h */

创建Customer.c的文件,其实创建的时候就帮忙把h文件创建好了

Customer.h

//
//  Customer.h
//  Market
//
//  Created by 千 on 16/7/24.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#ifndef Customer_h
#define Customer_h

#include <stdio.h>

void buy();
void clogin();

#endif /* Customer_h */

Customer.c

//
//  Customer.c
//  Market
//
//  Created by 千 on 16/7/24.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#include "Customer.h"


void buy(){
    printf("客户购买了\n");
}
void clogin(){
    printf("登陆了\n");
}


main.c
//
//  main.c
//  Market
//
//  Created by 千 on 16/7/24.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#include <stdio.h>
//商品 Product
//客户 Customer
//订单 Order
//购物车 ShoppingCart

#include "Customer.h"
#include "Product.h"
#include "Order.h"
#include "Cart.h"

#include "global.h"

int main(int argc, const char * argv[]) {
    // insert code here...
    productIn();
    productOut();
    
    clogin();
    buy();
    
    add();
    del();
    
    js();
    del();
    
    Customer c;
    c.cid = 1001;
    strcpy(c.name,"tom");
    c.age=20;
    
    
    
    return 0;
}




  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Visual Studio 2022 中,可以按照以下步骤将多个头文件源文件形成动态链接库: 1. 创建一个新的 DLL 项目,选择 C/C++ 作为项目语言。 2. 在项目中添加所有的头文件源文件。可以通过右键单击项目,选择“添加”->“现有项”来添加文件。 3. 配置项目属性,使其生成动态链接库。在项目属性中选择“配置属性”->“常规”,将“配置类型”选项设置为“动态库 (.dll)”。 4. 对于每个源文件,可以选择是将其编译为 DLL 的一部分,还是将其编译为静态库的一部分。在源文件的属性中,可以通过设置“配置属性”->“常规”->“项目中的对象文件”来控制编译选项。 5. 编译和链接项目。在 Visual Studio 中,可以选择“生成”->“生成解决方案”来编译和链接项目。 6. 将生成的 DLL 文件拷贝到您的应用程序中。可以通过在应用程序中设置“配置属性”->“链接器”->“输入”->“附加依赖项”选项来链接 DLL 文件。 具体操作可以参考以下示例代码: ``` // mylib.h #ifndef MYLIB_H #define MYLIB_H #ifdef MYLIB_EXPORTS #define MYLIB_API __declspec(dllexport) #else #define MYLIB_API __declspec(dllimport) #endif MYLIB_API int add(int a, int b); #endif // mylib.c #include "mylib.h" MYLIB_API int add(int a, int b) { return a + b; } // main.c #include <stdio.h> #include "mylib.h" int main() { int res = add(1, 2); printf("1 + 2 = %d\n", res); return 0; } ``` 在 Visual Studio 中创建一个 DLL 项目,将 mylib.h 和 mylib.c 添加到项目中,并将配置类型设置为“动态库 (.dll)”。在 mylib.h 中定义 MYLIB_EXPORTS 宏,这将用于确定是否导出函数。在 main.c 中包含 mylib.h 头文件,使用 add 函数进行计算。 编译和链接项目后,将生成 mylib.dll 文件。将 mylib.dll 文件复制到 main.c 所在的文件夹中,并运行可执行文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值