3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
在您的C程序中,刪除前劃線:
#include <stdlib.h>
#include <stdio.h>
extern char binary_input_txt_start[];
int main (int argc, char *argv[])
{
char *p;
p = binary_input_txt_start;
return 0;
}
C編譯器經(jīng)常(總是?)似乎在extern名稱前加下劃線。我不完全確定為什么會(huì)這樣-我認(rèn)為這個(gè)Wikipedia文章聲稱存在某些道理,
對(duì)于C編譯器,通常的做法是在所有外部作用域程序標(biāo)識(shí)符前加一個(gè)下劃線,以免與運(yùn)行時(shí)語言支持產(chǎn)生的沖突
但是讓我感到震驚的是,如果在所有externs之前都加了下劃線,那么您實(shí)際上并沒有對(duì)分區(qū)進(jìn)行太多分區(qū)。無論如何,這又是一個(gè)問題,事實(shí)是下劃線確實(shí)被添加了。

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個(gè)贊
我在Linux(Ubuntu 10.10)上進(jìn)行了測試。
資源文件:
input.txtgcc(Ubuntu / Linaro 4.4.4-14ubuntu5)4.4.5 [生成用于Linux的ELF可執(zhí)行文件]
生成symbol_binary__input_txt_start
。
接受符號(hào)_binary__input_txt_start
(帶下劃線)。i586-mingw32msvc-gcc(GCC)4.2.1-sjlj(mingw32-2)[為Windows生成PE可執(zhí)行文件]
生成symbol_binary__input_txt_start
。
接受符號(hào)binary__input_txt_start
(不帶下劃線)。
- 3 回答
- 0 關(guān)注
- 585 瀏覽
添加回答
舉報(bào)