先看一下程序的运行结果;Win32程序,没窗口;只有WinMain入口;

工程如下;main.c使用了a.c、b.c、d.c中的函数;

main.c;

#include <windows.h>
#include "a.h"
#include "b.h"int A; /* 定义外部变量 */
int power(int);    /* 函数声明 */ int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int       nCmdShow)
{/* TODO: Place code here.*/char szBuffer[100];wsprintf(szBuffer, "较大的数字是:%d",myMax(30,87));MessageBox(NULL,szBuffer,TEXT("调用a.c"),0);wsprintf(szBuffer, "两数之和是:%d",myAdd(33,44));MessageBox(NULL,szBuffer,TEXT("调用b.c"),0);A=7;wsprintf(szBuffer, "乘法结果是:%d",power(3));MessageBox(NULL,szBuffer,TEXT("调用d.c"),0);return 0;
}

a.c;

int myMax(int a,int b){if(a>b)return a;return b;
}

b.c;

int myAdd(int a, int b){return a+b;
}

a.h;

int myMax(int ,int );

b.h;

int myAdd(int , int );

main.c作如下包含,

#include "a.h" 
    #include "b.h"

即可调用a.c和b.c中的函数;

使用extern关键字来声明变量为外部变量。具体说就是在其中一个c文件中定义一个全局变量key,然后在另一个要使用key这个变量的c文件中使用extern关键字声明一次,说明这个变量为外部变量,是在其他的c文件中定义的全局变量。
例如在01.c文件中定义变量abc,在02.c文件中声明abc变量为外部变量,这样这两个文件中就能共享这个变量abc了。

d.c;

extern A;/*声明A为一个已定义的外部变量*/
int power(int n){int i,y=1;for(i=1;i<=n;i++){y*=A;}return y;
}

变量A在main.c中赋值,然后调用d.c中的power()函数;

Win32 C 语言程序编译多个文件和在多个文件中声明外部变量相关推荐

  1. linux声明语言变量,C语言中用extern声明外部变量

    2. 在多文件的程序中声明外部变量 如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量num,不能分别在两个文件中各自定义一个外部变量num.正确的做法是:在任一个文件中定义外部变量num, ...

  2. 将易语言程序编译为exe程序

    上一篇文章中讲到如何利用以语言实现简单的人机交互,这篇文章中将会分享如何将易语言程序编译为exe程序. 第一步 编写一个易语言程序 步骤详见上一篇博客,在这里就不再赘述了.易语言实现最简单的人机交互_ ...

  3. c语言中声明外部函数需要添加的关键字,C语言中声明和定义的区别——分析extern关键词。...

    一直很迷惑C语言中的声明和定义的有些实践中的用法,说迷惑实践是因为声明和定义的概念上的区别是很明确的. 定义和声明的区别(主要针对变量): 定义是要为变量分配存储空间,还可以在定义的时候为变量指定初始 ...

  4. 能否用痰盂盛饭——谈谈在头文件中定义外部变量

    能否用痰盂盛饭--谈谈在头文件中定义外部变量 - garbageMan - 博客园 能否用痰盂盛饭--谈谈在头文件中定义外部变量 "能否用痰盂盛饭"并非是一个技术问题,而是一个哲学 ...

  5. Linux上C语言程序编译过程详解

    点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 本文将介绍如何将高层的C/C++语言编写的程序转换 ...

  6. C语言程序编译过程 2

    C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作 ...

  7. c语言程序编译与烧录,一种解释自定义脚本并烧录的方法与流程

    本发明属于芯片烧录技术领域,特别涉及一种通过脚本进行芯片烧录的方法. 背景技术: 目前的烧录芯片主要是通过烧录器将烧录文件进行烧录,芯片中才会存储相应的代码.烧录文件有许多格式,如BIN文件,HEX文 ...

  8. c语言程序编译输出乱码,解决VC++编译程序出现中文乱码的问题

    大家在使用VC++进行编译的时候,是否都会遇见一种情况,那就是编译以后出现了中文代码.小编觉得,这一种情况还是比较普遍的.那么为了可以解决大家的难题,今天小编就教大家解决VC++编译程序出现中文乱码的 ...

  9. C语言程序编译和执行过程

    1.预处理 1).宏定义展开2).头文件展开3).删除注释4).条件编译格式:gcc -E a.c -o a.i 2.编译1).检查语法2).转化成汇编语言格式:gcc -S a.i -o a.s 3 ...

最新文章

  1. 《按键消抖与LED控制》实验的个人思考与总结
  2. myeclipse 修改模板
  3. 知识点讲解四:栈溢出(stack overflow)问题解决方案
  4. 并发编程的艺术:第二章
  5. android aar编程,AndroidStudio脚本命令指定AAR生成目录与版本号
  6. 【C++】Visual Studio教程(九) -卸载 Visual Studio
  7. 用户认证-什么是会话
  8. 纽约佩斯大学孔子学院:中国故事
  9. 分享几个Python小技巧函数里的4个小花招
  10. Bzoj4556 [Tjoi2016Heoi2016]字符串
  11. sqlserver卸载不完全导致安装失败
  12. 流程图中的实线_流程图符号_流程图中的带箭头的线段代表什么?
  13. Aspose.Words使用模板导出数据库中图片内容
  14. ib课程北京国际学校哪里有?
  15. 守望先锋地图工坊分享合集
  16. MES 系统价格多少钱?企业如何甄选MES 厂商?
  17. Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况(二)
  18. Feng Office 3.7.0.5 - 文件上传
  19. 三元运算符的基本用法
  20. 软件项目管理和测试题,软件项目管理第一章测试题

热门文章

  1. 博士生传给硕士生的经验
  2. explain 之 table || explain 之 type
  3. 优化group by 语句
  4. Understand Event-Driven Software Architecture
  5. web相关概念回顾|| 部署项目的方式
  6. SQL Server数据库字符集、版本类型、版本号、所在服务器名、语言SQL语句查询语法演示
  7. [YTU]_2570 指针练习——变量交换
  8. dhcp只能分配与路由器相同网段么_dhcp工作原理
  9. kettle预览点两下才出数_孩子过生日选“阴历”还是“阳历”?有3点讲究,需斟酌再决定...
  10. 正交多项式族(勒让德多项式跟切比雪夫多项式)理论