为什么在本MPLAB C示例中使用`extern`?

问题描述 投票:0回答:2

MPLAB XC8 Compiler User Guide中,第162页上的示例(如下所示)将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声明不占用任何内存,可以将其映射到现有对象的顶部。

c extern mplab
2个回答
0
投票

没有区别。主要是选择显式还是隐式。


-3
投票

这仅是因为type和address声明仅需要inputData的声明。不需要物理对象。然后使用指针访问数据。

BTW这是一个示例,该编译器有多糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.