C语言 extern学习1
没有头文件时,通过本文件内的函数声明来确定定义域,实现功能:
//单文件测试
#include <stdio.h>
/*
经测试,C语言环境下子函数默认是void型;所以可省略不写
为严谨起见,加上void
*/
void printStr(); //函数定义域:从声明点延伸到源程序文本结束
void main() { printStr(); } void printStr() { printf("Hello world!\n"); }
多文件测试:
第一种方案:
main.c 子函数定义
head.h 子函数的声明,该种方法类似单文件测试,目的是将定义域提到最前面 优点是:不必添加子函数中用到的库函数相应的库文件
代码:
head.h
void printStr(); //函数定义域:从声明点延伸到源程序文本结束
main.c
//多文件测试
#include "head.h"
#include <stdio.h>
/*
经测试,C语言环境下子函数默认是void型;所以可省略不写
为严谨起见,加上void
*/ void main() { printStr(); } void printStr() { printf("Hello world!\n"); }
第二种方案:
head.h 子函数定义
main.c 直接引用头文件,无须声明,缺点是:子函数中用到的库函数必须添加相应的库文件
代码:
head.h
#include <stdio.h>
void printStr() { printf("Hello world!\n"); }
main.c
//多文件测试
#include "head.h"
#include <stdio.h>
/*
经测试,C语言环境下子函数默认是void型;所以可省略不写
为严谨起见,加上void
*/ void main() { printStr(); }
C语言 extern学习1的更多相关文章
- C语言 extern学习2 分析
上一篇文章中,通过头文件声明,而调用有一个特别大的漏洞: 为什么编译器可以链接过来呢,因为默认是extern修饰的,这种类似全局作用域的功能使其可以被调用 继续加强学习: 这一次有两对C文件: fir ...
- C语言课程学习的总结
C语言课程学习的总结 学习C程序这门课一年了,这是我们学的第一门专业课.在大学里,C语言不但是计算机专业的必修课程而且也是非计算机专业学习计算机基础的一门必修课程.所以作为我这个计算机专业的学生来说当 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- C语言(函数)学习之strstr strcasestr
C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...
- 【Go语言】学习资料
这段时间一直在看Go语言,6月3日Apple发布了swift发现里面竟然也有许多Go语言的影子,截至现在每天都在感觉到Go语言的强大.确实值得一学 今天在这里给园友们推荐一些Go语言的学习资料 网站 ...
- 远离go path,弃用go get,使用go mod 进行go语言的学习
标题说的是go语言的学习,因为我也没做过开发 文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gl ...
- Dart语言快速学习上手(新手上路)
Dart语言快速学习上手(新手上路) // 声明返回值 int add(int a, int b) { return a + b; } // 不声明返回值 add2(int a, int b) { r ...
- D02-R语言基础学习
R语言基础学习——D02 20190423内容纲要: 1.前言 2.向量操作 (1)常规操作 (2)不定长向量计算 (3)序列 (4)向量的删除与保留 3.列表详解 (1)列表的索引 (2)列表得元素 ...
- D01-R语言基础学习
R语言基础学习——D01 20190410内容纲要: 1.R的下载与安装 2.R包的安装与使用方法 (1)查看已安装的包 (2)查看是否安装过包 (3)安装包 (4)更新包 3.结果的重用 4.R处理 ...
随机推荐
- 微信小程序下拉刷新和上拉加载
小程序知识点二 1.上拉加载和下拉刷新 Wxml文件 <scroll-view scroll-top="{{scrollTop}}" scroll-y="true& ...
- transform和transition
作者:zccst 例如:图片墙 .另外还有,便签墙 使用的样式: 1,正常情况下 ul#index_cards li { background: url("../images/ca ...
- UIP源码之ARP过程分析
之前我们使用UIP实现了tcp和udp通讯今天来说说UIP的实现流程,当然,这篇文章里面只会涉及tcp和udp,暂时还没办法说DHCP,因为UIP的DHCP实现使用了协程的概念,下一章将协程之后再说D ...
- for/foreach/linq效率测试
; Random r = new Random(); List<byte> list = new List<byte>(); Console.WriteLine("开 ...
- 小偷网站工具--Teleport Ultra
可以克隆别人网站的工具 http://jingyan.baidu.com/article/219f4bf7dce58bde442d3836.html
- ios 计算字符串长度<转>
- (int)textLength:(NSString *)text//计算字符串长度 { float number = 0.0; for (int index = 0; index ...
- leetcode-005 reorder list
1 package leetcode; public class ReOrderList { public void reorderList(ListNode head) { if(head==nul ...
- Memcached源码分析之items.c
#include "memcached.h" #include <sys/stat.h> #include <sys/socket.h> #include ...
- Delphi Math里的基本函数,以及浮点数比较函数(转)
源:Delphi Math里的基本函数,以及浮点数比较函数 Delphi里的好东西太多,多到让人觉得烦.这种感觉就是当年打游戏<英雄无敌3>,改了钱以后,有钱了每天都要造建筑,明明是好事, ...
- JVM面试
深入理解Java内存模型:http://www.cnblogs.com/skywang12345/p/3447546.html http://www.infoq.com/cn/articles/jav ...