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 关注
- 542 浏览
添加回答
举报