妖异的问题

发布于 2022-07-19 06:01:38 字数 158 浏览 8 评论 4

假设一个Cpp文件有一条语句: extern char a[100];表明这是个全局变量,它在其他模块中定义。
然后另外有一条使用这个变量的语句: a[0] = '';
然后假设把这个cpp编译成可执行文件,那么它会报变量a未定义;但是如果把它编译成.so文件,编译能够正确通过。这是为什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

长伴 2022-07-27 01:47:41

^_^

梨涡 2022-07-25 07:38:40

原帖由 Bayweb 于 2006-9-7 12:21 发表

>>
>>
>>so文件并不是可直接执行的文件,编译器对他的编译处理没有像执行文件那么彻底。
>>
>>

好粗旷的回答...

夜未央樱花落 2022-07-24 05:57:34

糊涂了...连接时肯定会报错的

最单纯的乌龟 2022-07-21 19:18:48

原帖由 l.darkfire 于 2006-9-7 11:53 发表
假设一个Cpp文件有一条语句: extern char a[100];表明这是个全局变量,它在其他模块中定义。
然后另外有一条使用这个变量的语句: a[0] = '';
然后假设把这个cpp编译成可执行文件,那么它会报变量a未定义;但是 ...

>>
>>
>>so文件并不是可直接执行的文件,编译器对他的编译处理没有像执行文件那么彻底。
>>
>>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文