3 回答

TA貢獻1784條經驗 獲得超8個贊
在您的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編譯器經常(總是?)似乎在extern名稱前加下劃線。我不完全確定為什么會這樣-我認為這個Wikipedia文章聲稱存在某些道理,
對于C編譯器,通常的做法是在所有外部作用域程序標識符前加一個下劃線,以免與運行時語言支持產生的沖突
但是讓我感到震驚的是,如果在所有externs之前都加了下劃線,那么您實際上并沒有對分區進行太多分區。無論如何,這又是一個問題,事實是下劃線確實被添加了。

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