作者okcool ( )
看板YOLO
标题Fw: [问卦] 为甚麽C语言自订函式一定要在主程式上面?
时间Sat Jun 8 23:34:45 2019
※ [本文转录自 Gossiping 看板 #1SzydGFl ]
作者: jserv (松鼠) 看板: Gossiping
标题: Re: [问卦] 为甚麽C语言自订函式一定要在主程式上面?
时间: Wed Jun 5 21:55:19 2019
※ 引述《fragmentwing (片翼碎梦)》之铭言:
: 如题
: 最近终於开始自学C语言
: 为甚麽C语言一定至少要放个原型在主程式上方才行?
: 或者说,明明都是一行一行读取,其他语言是怎麽做到可以把函式到处乱摆的
这问题非常好,我不知为何会引来负面声音,可能是原发问人没有把「其他语言」清楚
标示出来吧?抑或是问题太简短呢?有趣的问题如果被忽略,那真是太可惜。
其实由 Dennis M. Ritchie (以下简称 dmr) 开发的早期 C 语言编译器 [1] 没有明确
要求 function prototype 的顺序。dmr 在 1972 年发展的早期 C 编译器,原始程式码
後来被整理在名为 "last1120c" 磁带中 [2],我们如果仔细看 c00.c 这档案,可发现
位於第 269 行的 mapch(c) 函式定义,在没有 forward declaration [3] 的状况下,
就分别於第 246 行和第 261 行呼叫,奇怪吧?
而且只要再浏览 last1120c 里头其他 C 语言程式後,就会发现根本没有 #include 或
#define 这一类 C preprocessor [4] 所支援的语法,那到底怎麽编译呢?在回答这问题
前,摘录 Wikipedia 页面的讯息:
> As the C preprocessor can be invoked separately from the compiler with
> which it is supplied, it can be used separately, on different languages.
> Notable examples include its use in the now-deprecated imake system and for
> preprocessing Fortran.
原来 C preprocessor 以独立程式的形式存在,所以当我们用 gcc 或 cl (Microsoft
开发工具里头的 C 编译器) 编译给定的 C 程式时,会呼叫 cpp (伴随在 gcc 专案的
C preprocessor) 一类的程式,先行展开巨集 (macro) 或施加条件编译等操作,再来
才会出动真正的 C 语言编译器 (在 gcc 中叫做 cc1)。值得注意的是,1972-1973 年
间被称为 "Very early C compilers" 的实作中,不存在 C preprocessor (!),当时
dmr 等人简称 C compiler 为 "cc",此惯例被沿用至今,而无论原始程式码有几个档
案,在编译前,先用 cat [5] 一类的工具,将档案串接为单一档案,再来执行 "cc"
以便输出对应的组合语言,之後就可透过 assembler (组译器,在 UNIX 称为 "as")
转换为目标码,搭配 linker (在 UNIX 称为 "ld") 则输出执行挡。
所以说,在早期的 C 语言编译器,强制规范 function prototype 及函式宣告的顺序
是完全没有必要的,要到 1974 年 C preprocessor 才正式出现在世人面前,尽管当时
的实作仍相当阳春,可参见 dmr 撰写的 "The Development of the C Language" [6]
C 语言的标准化是另一段漫长的旅程,来自 Bell Labs 的火种,透过 UNIX 来到研究
机构和公司行号,持续影响着你我所处的资讯社会。
你或许会好奇,function prototype 的规范有什麽好处呢?这就要从 "Rationale for
International Standard -- Programming Languages -- C" [7] 阅读起,依据 C9X
RATIONALE 的第 70 页 (PDF 档案对应於第 78 页),提到以下的解说范例:
extern int compare(const char *string1, const char *string2);
void func2(int x) {
char *str1, *str2;
// ...
x = compare(str1, str2);
// ...
}
编译器里头的最佳化阶段 (optimizer) 可从 function prototype 得知,传递给函式
compare 的两个指标型态参数,由於明确标注了 "const" 修饰子,所以仅有记忆体地
址的使用并读取相对应的内容,但不会因为修改指标所指向的记忆体内容,从而没有产生
副作用 (side effect)。这样编译器可有更大的最佳化空间,可对照「你所不知道的 C
语言:编译器和最佳化原理篇」,得知相关最佳化手法。
一如 C9X RATIONALE 提到,C 语言和其他受 Algol 影响的程式语言,都具备 function
prototype 机制,这使得编译时期,就能进行有效的错误分析和侦测。无论是 C 语言、
B 语言,还是 Pascal 语言,都可追溯到 ALGOL 60 [9]。
ALGOL 是Algorithmic Language (演算法使用的语言) 的缩写,提出巢状 (nested) 结构
和一系列程式流程控制,今日我们熟知的 if-else 语法,就在 ALGOL 60 出现。
ALGOL 60 和 COBOL 程式语言并列史上最早工业标准化的程式语言。
可参见本看板
#1SdKXN4t
程式语言的演化,深受底层工具和硬体限制的影响,这次探讨的 function prototype
及函式宣告的顺序,其实就反映出编译器演化的历程。人类史上第一个编译器,A-0
System 开发於 1951-52 年间,注意到当时的用语是 "System",而且名称 A-0 代表
Arithmetic Language version 0,与其说是今天我们提及的高阶语言编译器,不如说是
程式的载入器 (loader) 或连结器 (linker)。
相关讯息可参见本看板
#1RhWSNPG
黑格尔在其 1820 年的着作「法哲学原理」提到: (德语原文)
> Was vernuftig ist, das ist wirklich;
> und was wirklich ist, das ist vernuftig.
英语可解读为 "What is rational is actual and what is actual is rational.",
像是 C 语言这样的工业标准,至今仍活跃地演化,当我们回顾发展轨迹时,凡是合乎
理性 (vernuftig),也就必然会出现、或成为现实 (wirklich),反过来说也成立。
甚至我们可推敲 C9X RATIONALE 字里行间,每个看似死板规则的背後,其实都可追溯出
像是上方的讨论。
欢迎关注「你所不知道的 C 语言」系列讲座:
https://hackmd.io/@sysprog/HJpiYaZfl
千万别忘了 C 语言的发展就是为了开发 UNIX 作业系统和相关系统程式,而 Linux 核心
自然就是将 UNIX 精神发扬光大的智慧结晶,欢迎关注「Linux 核心设计」课程,附有
线上教材:
http://wiki.csie.ncku.edu.tw/linux/schedule
[1] Very early C compilers and language,
https://www.bell-labs.com/usr/dmr/www/primevalC.html
[2] 位於 GitHub 的副本,
https://github.com/mortdeus/legacy-cc/
[3]
https://en.wikipedia.org/wiki/Forward_declaration
[4]
https://en.wikipedia.org/wiki/C_preprocessor
[5] cat 工具程式的作用是 "concatenate and print file",
https://www.unix.com/man-page/posix/1posix/cat/
[6] The Development of the C Language,
https://www.bell-labs.com/usr/dmr/www/chist.html
[7] Rationale for International Standard -- Programming Languages -- C
http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf
[8] 你所不知道的 C 语言:编译器和最佳化原理篇,
https://hackmd.io/@sysprog/Hy72937Me
[9] Algol 60,
https://en.wikipedia.org/wiki/ALGOL_60
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.116.82.61 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Gossiping/M.1559742928.A.3EF.html
1F:推 XXXXHAY: 头 06/05 21:55
2F:→ Costco5566: hello world 06/05 21:56
3F:推 sujianwei20: 前十 06/05 21:56
4F:→ moswu: 我也这麽觉得 06/05 21:56
5F:推 jiajia1: 快来推ㄍ不然被当文组 06/05 21:57
6F:推 Ericz7000: 前十 06/05 21:57
7F:推 he00504616: 先推 06/05 21:57
8F:推 angerD: 先推 06/05 21:57
9F:推 siamese: 这不是基本的吗 06/05 21:58
10F:推 a22918097: 推 06/05 21:58
11F:推 VXcc: 嗯嗯嗯 就是这样 06/05 21:58
12F:推 ggBird: 神 06/05 21:59
13F:推 fox875566: 看不懂 06/05 21:59
14F:推 Cybershit: 大大安安推一个 06/05 22:00
15F:推 Friend5566: 推一下 免得被说看不懂 06/05 22:00
16F:推 redDest: 推 06/05 22:00
17F:推 landysh: 推 06/05 22:00
18F:推 lturtsamuel: 看到这篇好像我不是CS的一样QQ 06/05 22:00
19F:推 rewrite404: 朝圣 06/05 22:01
20F:推 g5637128: 跪着推 06/05 22:01
21F:推 pzyc79: 这就是为什麽我恨C 06/05 22:01
22F:推 gungunme5566: 专业 06/05 22:01
23F:推 brian1015: 推 06/05 22:02
24F:推 Mesa5566: 116一定是废文 帮补血 06/05 22:02
25F:→ obdv: 淦 这样摸不到C罩拉 06/05 22:02
26F:推 barry910543: 大神又出来普渡众生了 06/05 22:02
27F:推 HowieH: 看不懂还是要推 06/05 22:02
28F:推 NTULioner: 嗯嗯 我也是这样想的 06/05 22:02
29F:推 Turas: CCC 06/05 22:02
30F:推 OGCOGCOGCOGC: 看不懂 06/05 22:03
31F:推 TrevorStory: 推 06/05 22:03
32F:推 salesperson: 恩恩跟我想的一样 只是我懒的打 06/05 22:03
33F:推 cjamhe01385: 每次线上讲座必看,可惜在新竹上班,不然就去旁听了 06/05 22:03
34F:→ ymx3xc: 我也是这麽想的 06/05 22:04
35F:推 compuworld: 朝圣推 06/05 22:04
36F:推 hizuki: 讲古 06/05 22:04
37F:推 WYchuang: 老板问我为什麽跪着上班 06/05 22:04
38F:推 jackyT: 这个钓到jserv太扯 06/05 22:05
39F:→ FlynnZhang: 卡 06/05 22:05
40F:推 jimmy1999: 钱钱 06/05 22:05
41F:推 allomifo: 推 06/05 22:06
42F:推 tongzhou: 朝圣 06/05 22:06
43F:推 eric21489: 太神啦 钓到ㄌ 06/05 22:06
44F:推 tcfsh510: 推 朝圣 06/05 22:06
45F:推 Ericz7000: 之前老师有去交大上物联网什麽的课啊 06/05 22:06
46F:推 faker007: 看无 06/05 22:07
47F:推 choco7: 恩恩 跟我想得差不多 06/05 22:07
48F:推 nqj: 嗯嗯对丫 06/05 22:08
49F:推 jackwula9211: 不过C++某些时候还是很好用啊 06/05 22:08
50F:推 u04rmp: 快推 06/05 22:09
51F:推 terryshu: 推 06/05 22:09
52F:推 andy188: 前百 06/05 22:09
53F:推 max8568: 有神快拜 06/05 22:09
54F:→ ZhouGongJin: 只能给个赞 06/05 22:09
55F:推 q13461346: 跪了 06/05 22:09
56F:推 rong1994: 嗯嗯 我也是这麽认为的 06/05 22:10
57F:推 nicklyyyy: 嗯,跟我想说的差不多 06/05 22:11
58F:推 mmonkeyboyy: 推一下 认真 还用RANDY的书 XD 06/05 22:11
59F:推 ajason0753: 先跪再说 06/05 22:11
60F:推 Hacker8246: 没错 就是这样 06/05 22:12
61F:推 jahfone: 那为什麽有些程式语言不这样用呢? 06/05 22:13
62F:推 devilkool: 神 06/05 22:13
63F:推 Fice: 推 06/05 22:13
64F:→ chaige: 跟我想得差不多 中间有地方小错但无伤大雅 可以接受 06/05 22:13
65F:推 DanielHAO: 恩恩跟我想的一样 06/05 22:13
66F:→ a0652qj: 完全看不懂,刚好也箭头XD 06/05 22:13
67F:推 ploveh: jserv下凡 06/05 22:13
68F:推 hardway: 太会了吧 06/05 22:14
69F:推 hohamita: 推 06/05 22:14
70F:推 s0805744: 看完觉得大学对不起我教授 06/05 22:14
71F:→ jserv: @jahfone, 最初C语言不用理会函式定义的顺序,最终能够处理 06/05 22:15
72F:→ jserv: 符号(symbol)之间的相依状况即可。是後来C语言才变严格的 06/05 22:15
73F:推 kipi91718: 推! 好详细长知识了 写了这麽久的C都不知道标准来由 06/05 22:15
74F:推 cattgirl: 你在写期刊 06/05 22:17
75F:→ jserv: @Ericz7000, 之前我在交大资工系还开了「自由开源软体与 06/05 22:17
76F:推 CityRanger: 废物cs生看不懂 QQQQQ 06/05 22:17
78F:→ jserv: @kipi91718, 没事,我只是练习打字,下次请鼓励发问的人 06/05 22:18
79F:推 donkilu: 推 06/05 22:19
80F:推 mmonkeyboyy: 这本书台湾不是很多人用的 根本是OS基石 06/05 22:19
81F:→ jserv: @jackwula9211, 针对 C++ 可讲古的题材更多啊...嘶 06/05 22:20
82F:推 iamnotme: 有神快拜 06/05 22:22
83F:推 Gold740716: 但既然身为编译式语言,完全可以分析完整份档案再开始 06/05 22:23
84F:推 smonke: 好~! 完全不懂...还是给推 06/05 22:23
85F:推 justatree: 推 06/05 22:23
86F:推 iverlung: 有神快拜 06/05 22:23
87F:推 palapalanhu: 神 06/05 22:23
88F:→ Gold740716: 最佳化吧?哪个在先哪个在後其实可以忽略。 06/05 22:24
89F:→ jserv: @Gold740716, 涉及到 side effect 06/05 22:24
90F:→ Gold740716: cs 这篇看不懂可以自尽了 06/05 22:24
91F:推 kyrie77: 嗯嗯嗯 跟我想的差不多 06/05 22:25
92F:推 amethystboy: 一定要先推 06/05 22:26
93F:推 cattgirl: 你是不是成大教授 06/05 22:26
94F:推 aa55667878: 推 06/05 22:26
95F:→ lusifa2007: 快推一个不然人家以为我们不懂Xd 06/05 22:26
96F:推 nonopig: 推 跟我想的是一样 06/05 22:27
97F:→ cattgirl: 我朋友交大教授 与你决一死战 06/05 22:27
98F:推 fjyang: 神 06/05 22:28
99F:→ jserv: @cattgirl, 可以请你朋友等我大学毕业,再来决斗吗? 06/05 22:28
100F:推 ry3298: 推 06/05 22:29
101F:推 DarkerDuck: 推推 06/05 22:29
102F:推 kis28519: 有神快拜 06/05 22:30
103F:→ ccucwc: 认真推 06/05 22:32
104F:推 roro0: 好强 XD 06/05 22:34
105F:推 kingofage111: 推 06/05 22:35
106F:推 ERT312: 学程式语言还要读历史 06/05 22:35
107F:推 yuxds: 推 06/05 22:37
108F:推 justastupid: 嗯嗯 你说的没错 06/05 22:41
109F:推 wju1230: 有猫给推 06/05 22:41
110F:推 ShittyFace: 先推再看 06/05 22:41
111F:推 bmks: 推个 06/05 22:41
112F:推 vita88: 好啦,我看不懂 06/05 22:42
113F:推 Wand: 推 06/05 22:42
114F:推 skhten: 怕 06/05 22:42
115F:推 arsonlolita: 嗯嗯 06/05 22:42
116F:推 ab37695543xs: 所以简单的来说就是为了更容易在编译时期找到错误与 06/05 22:46
117F:→ ab37695543xs: 最佳化罗? 06/05 22:46
118F:推 atpx: 算是有表达到我的想法, 给你75分 06/05 22:46
119F:推 knme: 推 06/05 22:48
120F:推 ljsnonocat2: 有神快拜 06/05 22:51
121F:推 sismiku: 恩 跟我想的差不多 06/05 22:52
122F:推 KNVSEOC: 就算一知半解也要推 06/05 22:53
123F:→ minicoke: 德文你也懂? 06/05 22:55
124F:推 pazoo: 推 06/05 22:55
125F:推 derekjj: 有神快拜 06/05 22:56
126F:推 kiuan: 推 06/05 22:56
127F:推 gakaza: 跪推 +1 06/05 22:57
128F:推 fallen01: 推 06/05 22:59
129F:推 FJHS: 朝圣 06/05 23:02
130F:推 scoutpioneer: 呜呜身为理组还是看不懂 06/05 23:03
131F:→ jserv: @ab37695543xs, 回顾程式语言的发展,人类的想像力很丰富, 06/05 23:04
132F:推 asiamistborn: 7777777777777 06/05 23:04
133F:→ jserv: 像是LISP这类对应到数学抽象思考的语言,很早就提出了。但C 06/05 23:04
134F:→ jserv: 却走了实务导向的路途,也就是一方面让语言本身定义严谨, 06/05 23:05
135F:→ jserv: 另一方面确保编译器和连结器得以有效实作出来 06/05 23:05
136F:推 derson: 只能跪着推了 06/05 23:05
137F:推 silentduke: 朝圣推 06/05 23:06
138F:推 yoshihuang8: 推 06/05 23:06
139F:推 pandatom: 朝圣jserv 06/05 23:07
140F:推 voyhanxu: 快推!免得被别人发现我文组的! 06/05 23:07
141F:推 frk2z125: 推 以前计算机很弱,对於记忆体与size更是斤斤计较, 所 06/05 23:09
142F:→ frk2z125: 以能从人这边规范就规范 06/05 23:09
143F:推 qwer338859: 神 06/05 23:10
144F:推 Missnanako: 嗯嗯 06/05 23:11
145F:推 Misoshiru: 嗯嗯我也是这麽想的 只是懒得打 06/05 23:13
146F:推 ericleft: 原来如此 06/05 23:13
147F:推 lainhoter: 初音只是个软体 06/05 23:14
148F:推 vasia: 全台文组同学深表赞同 06/05 23:15
149F:推 danny30715: 朝圣 06/05 23:15
150F:推 blackman5566: 写了大半辈子程式也看不懂这篇在说什麽 只能推了 06/05 23:16
151F:推 probity: 我早告诉过你了 06/05 23:18
152F:推 schumi7401: 正如我想 06/05 23:20
153F:推 lolitass: 赶快推 以免被发现完全看不懂 06/05 23:21
154F:推 youngglasses: 简单说就是为了最佳化啦.... 越早将宣告的部分写出 06/05 23:23
155F:→ youngglasses: 在转换的初期处理的时候就可以更好的安排资源 06/05 23:23
156F:推 mike40709: 没错跟我想的一样 06/05 23:23
157F:推 xu3ru0454: 你及格了! 06/05 23:23
158F:推 blackbottle: 对对对没错没错 就是这样 我也是这麽觉得 只是还没来 06/05 23:25
159F:→ blackbottle: 得及写文章 06/05 23:25
160F:推 Everyeeeee: 我知道啊 06/05 23:25
161F:推 isisss: 嗯嗯 我也这样觉得 06/05 23:26
162F:推 gabriel: 八卦好文必须推 06/05 23:28
163F:推 amALu: ......... 06/05 23:31
164F:推 eric112: 原来大家都这样想 06/05 23:32
165F:推 fg008kimo: 好闻必推 06/05 23:32
166F:推 SamuelLuo: 推,没想到还能看到德文 06/05 23:36
167F:推 liaon98: 跪着读 06/05 23:36
168F:推 erre: 这其实真的很基本…… 06/05 23:37
169F:推 Account4PTT: 推 06/05 23:39
170F:推 bbo6uis122: 推 06/05 23:40
171F:推 RoaringWolf: 恩恩,对,就这样嘛,恩 06/05 23:41
172F:推 Bright: 嗯嗯 对 06/05 23:45
173F:推 zs84: 推 06/05 23:47
174F:推 loet: 推 06/05 23:48
175F:推 omegajoker: 推 06/05 23:49
176F:推 coolda: 先推再看 06/05 23:50
177F:→ notneme159: 推个 06/05 23:53
178F:推 tommy6300167: 跟我想的差不多 打到一半被你先回答了 06/05 23:53
179F:→ ck030561: 唉 本来想开示的 你都讲完了 06/05 23:54
180F:推 MagicSword: 嗯嗯,我也这样觉得。 06/05 23:54
181F:推 randy061: 虽推,但太硬了… 无法看完 06/05 23:55
182F:推 shishe: 推推 学了C语言 但看到你的之後感觉什麽都没学过 06/05 23:55
183F:推 imaxpayne: 跟我想的一样 06/05 23:56
184F:推 Matz: 推推 06/05 23:57
185F:推 platinum5566: 长知识了 06/05 23:59
186F:推 a5245242003: 推 06/06 00:00
187F:推 panda04056: 推推 06/06 00:00
188F:推 tweence: 06/06 00:05
189F:推 tom83615: 呜呜呜我废物 只看得懂3成 06/06 00:07
190F:推 qscez: 推 06/06 00:07
191F:推 jai166: 竟然钓到大神 06/06 00:07
192F:推 rex662624: 推个 06/06 00:14
193F:推 rog43: 感谢老师赐教 06/06 00:16
194F:推 rfireptt: 原来是大神,真的写的很好,浅显易懂 06/06 00:21
195F:推 jeromeshih: 推 06/06 00:22
196F:推 ffffffffff: 大神 06/06 00:24
197F:推 jim0611tw: 真的太强 受小弟一拜 06/06 00:24
198F:推 Kent1313: 有神,快推 06/06 00:30
199F:推 milker: 我忙到现在就被你先回文了 可惜 06/06 00:33
200F:推 UROLOGY: 跟我想的差不多 06/06 00:35
201F:推 fragmentwing: 原来一开始也没被规范啊 泪推大神教授 06/06 00:41
202F:推 charlie0112: 跟我想的一样 06/06 00:42
203F:推 hakosaki: 不愧是jserv大大 06/06 00:42
204F:→ jkreg: 果然是我大116 06/06 00:46
205F:推 stw0975: 推 06/06 00:50
206F:推 abc53: 这感觉好无趣 06/06 00:52
207F:推 billccchang: j神快推! 06/06 00:56
208F:推 fragmentwing: 再推 06/06 00:57
209F:推 matt4424: 太神啦 06/06 01:00
210F:推 nullife: 太神啦 06/06 01:08
211F:推 erwinia: 推 06/06 01:08
212F:推 patrickwu2: 太神啦 06/06 01:13
213F:推 gyman7788: 对啊,跟我国小学的差不多正确 06/06 01:15
214F:推 blackbottle: 对对 再推一次 06/06 01:16
215F:推 balcony5566: 还在记事本打文章草稿就被你抢先了 可惜 06/06 01:17
216F:推 fragmentwing: 再三推 06/06 01:29
217F:推 fragmentwing: 推 06/06 01:34
218F:推 chingyi071: 只能推了 06/06 01:52
219F:推 milkteafood: 没错唷 06/06 02:08
220F:推 a2470abc: 我一定是念了假的cs 06/06 02:11
221F:推 Pictor: 推 06/06 02:12
222F:推 den95279889: .....蒜泥屌 06/06 02:14
223F:推 soto2080: 推 06/06 02:15
224F:推 SMMIT: 强者 推 06/06 02:16
225F:推 Hoshiwa: jserv大神出现啦 06/06 02:18
226F:推 v9290026: 先跪 06/06 02:22
227F:推 oblrtippo: 懒得看了 直接推XD 06/06 02:22
228F:推 motheregg: 777777 06/06 02:23
229F:推 newest: 朝圣 06/06 02:25
230F:推 samonline: 朝圣jserv大大 上次研讨会有看到您 06/06 02:36
231F:推 willion003: 有神快拜 06/06 02:36
232F:推 Sacral: 推 06/06 02:57
233F:推 willie6501: 钓到教授啦~ 06/06 03:12
234F:推 wirecut: 先推 06/06 04:11
235F:推 OlogN: 神人推个 06/06 04:41
236F:推 htl: 朝圣推 06/06 04:43
237F:推 dreamdds: 这麽巧跟我想的一样 06/06 04:46
238F:推 snowball: 推 06/06 05:23
239F:推 romber: Oh God….! 感谢大神宅色夫,学到很多! 06/06 05:30
240F:推 rex44391: 推 06/06 05:45
241F:推 lemonwater: 我高中时也有想过 06/06 05:58
242F:推 ttff: 为什麽我跪着推文 06/06 06:14
243F:推 eternal5566: 嗯嗯 06/06 07:13
244F:推 superex: 推 06/06 07:24
245F:推 CleanThunder: 我资料结构学期成绩0分 06/06 07:44
246F:推 NeoLife: 我...我看不懂 06/06 08:15
247F:推 sexyboy5566: 跟我想的一样 06/06 08:18
248F:→ OGC218: 文组路过 06/06 08:20
249F:推 yuiweq1999: 有神快推 06/06 08:25
250F:→ s37166117: 资工人表示: 06/06 08:26
251F:→ s37166117: 看不懂 06/06 08:26
252F:推 abb123456: 推 06/06 08:36
253F:推 ZC: 理科推 06/06 08:38
254F:→ GakkiMyWife: 我国小电脑课就想到了 06/06 08:45
255F:推 czberlin: 拜请拜请 06/06 08:46
256F:推 freeflying: 好强,但看得懂的没几个 06/06 09:28
257F:推 alans: 教书系的?! 06/06 09:36
258F:推 kersihi: 有神快拜 06/06 10:02
259F:推 xhung: 推 这文章太棒 值得收藏~~~ 06/06 10:10
260F:推 jikker: 有神快拜 06/06 10:12
261F:推 jamz: 我不想摸c了,我要g 06/06 10:15
262F:推 kokunmai: 06/06 10:16
263F:推 user1120: 推 06/06 10:45
264F:推 Lydia66: 老师好 06/06 11:03
265F:→ cloudin: 虽然学过 但都忘光了QQ 06/06 11:23
266F:推 atk30257: 长知识了 06/06 11:29
267F:推 ntuee1803: 太神 06/06 11:33
268F:推 vul3kuo: 看不懂的上Complier都在睡觉 06/06 11:41
269F:推 usoko: 只有写过C-- 呜呜呜呜呜 06/06 12:34
270F:推 ms0007912: 不知到但感觉很屌 06/06 12:37
271F:推 ohlong: 你资工系? 06/06 13:10
272F:推 EthereumPTT: 有神快拜 06/06 17:04
273F:推 HowLeeHi: 推,Linker取名ld,所以Linker和Loader是有渊源的吧? 06/06 20:18
274F:→ HowLeeHi: 譬如说在link及load阶段,都会做linking和relocation 06/06 20:22
275F:→ jserv: @HowLeeHi, 不仅有渊源,早期根本就是一体的 :-) 06/06 21:11
276F:→ jserv: 可参照「你所不知道的 C 语言」系列讲座,有两项linker相关 06/06 21:11
277F:→ jserv: @balcony5566, 一定是你的记事本软体不好用,在此诚心建议 06/06 21:12
278F:→ jserv: 改用有妈祖加持的编辑器: Mazu Editor! 06/06 21:13
280F:推 gipo776: 先跪 06/06 22:07
281F:推 ikenaka: 老师我爱你 06/07 03:41
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: okcool (125.230.18.220 台湾), 06/08/2019 23:34:45