main函数与exit函数

在main函数中调用exit和return结果是一样的,但在子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void fun()
  4. {
  5. printf("fun\n");
  6. // return;
  7. exit(0);
  8. }
  9. int main()
  10. {
  11. fun();
  12. while (1);
  13. return 0;
  14. }

多文件编程

单文件编程

  1. // 单文件
  2. #define _CRT_SECURE_NO_WARNINGS
  3. # include <stdio.h>
  4. int add(int a, int b);
  5. int sub(int a, int b);
  6. int mul(int a, int b);
  7. int main(void)
  8. {
  9. int a = 5;
  10. int b = 35;
  11. printf("%d + %d = %d\n", a, b, add(a, b));
  12. printf("%d - %d = %d\n", a, b, sub(a, b));
  13. printf("%d x %d = %d\n", a, b, mul(a, b));
  14. return 0;
  15. }
  16. int add(int a, int b)
  17. {
  18. return a + b;
  19. }
  20. int sub(int a, int b)
  21. {
  22. return a - b;
  23. }
  24. int mul(int a, int b)
  25. {
  26. return a * b;
  27. }

分文件编程

  • 把函数声明放在头文件xxx.h中,在主函数中包含相应头文件
  • 在头文件对应的xxx.c中实现xxx.h声明的函数

image.png

  1. // main.c
  2. # define _CRT_SECURE_NO_WARNINGS
  3. # include "head.h"
  4. int main(void)
  5. {
  6. int a = 5;
  7. int b = 35;
  8. printf("%d + %d = %d\n", a, b, add(a, b));
  9. printf("%d - %d = %d\n", a, b, sub(a, b));
  10. printf("%d x %d = %d\n", a, b, mul(a, b));
  11. printf("%d / %d = %d\n", a, b, mod(a, b));
  12. return 0;
  13. }
  1. // head.h
  2. #ifndef __HEAD_H__
  3. #define __HEAD_H__
  4. // include 头文件
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <stdlib.h>
  8. #include <math.h>
  9. #include <time.h>
  10. // 函数声明
  11. int add(int a, int b);
  12. int sub(int a, int b);
  13. int mul(int a, int b);
  14. int mod(int a, int b);
  15. // 类型定义
  16. // 宏定义
  17. #define N 10
  18. #define PI 3.14
  19. #endif
  1. // 这些函数可放到多个.c文件
  2. int add(int a, int b)
  3. {
  4. return a + b;
  5. }
  6. int sub(int a, int b)
  7. {
  8. return a - b;
  9. }
  10. int mul(int a, int b)
  11. {
  12. return a * b;
  13. }
  14. int mod(int a, int b)
  15. {
  16. return a / b;
  17. }

防止头文件重复包含

当一个项目比较大时,往往都是分文件,这时候有可能不小心把同一个头文件 include 多次,或者头文件嵌套包含。

为了避免同一个文件被include多次,C/C++中有两种方式,一种是 #ifndef 方式,一种是 #pragma once 方式。

方法一:

  1. #ifndef __SOMEFILE_H__
  2. #define __SOMEFILE_H__
  3. // 声明语句
  4. #endif

方法二:

  1. #pragma once
  2. // 声明语句