繁体   English   中英

为什么在这个 MPLAB C 示例中使用了 `extern`?

[英]Why is `extern` used in this MPLAB C example?

MPLAB XC8 编译器用户指南 中,第 162 页上的示例(复制如下)将extern关键字与@说明符结合使用。 鉴于我们自己指定地址,为什么需要这样做? 它本身不会分配任何内存。

我能想到的唯一原因可能是 extern 变量在启动时没有归零。 但是,C 变量通常包含垃圾,直到您显式分配给它们。 所以……我不知道。

也许它与它在头文件中有关? 避免多个#include语句导致某种“变量已声明”错误?


如果指针必须访问数据存储器中的对象,则需要定义一个不同的对象来充当虚拟目标。 例如,如果要计算从数据存储器中地址 0x90 开始的 10 个字节的校验和,则可以使用以下代码。

 const char * cp; extern char inputData[10] @ 0x90; cp = &inputData; // cp is incremented over inputData and used to read values there

extern 声明不消耗内存,这可以映射到现有对象的顶部。

没有什么不同的。 这主要是显式与隐式的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM