gpt4 book ai didi

c - Contiki 中的头文件在哪里?

转载 作者:行者123 更新时间:2023-11-30 19:01:38 25 4
gpt4 key购买 nike

我试图理解 examples/cc26xx/cc26xx-ble-client-demo 中存在的 IPv6-over-BLE UDP-client 演示示例,该代码具有以下头文件:

#include "contiki.h"
#include "contiki-lib.h"
#include "contiki-net.h"

#define DEBUG DEBUG_FULL
#include "net/ip/uip-debug.h"
#include "net/ip/uiplib.h"
#include "net/ipv6/uip-icmp6.h"

我只想知道这些头文件在 Contiki 文件系统中的位置,因为 BLE 连接的主要实现代码位于 cpu/cc26xx-cc13xx/rf-core/*.[ch] cpu/cc26xx-cc13xx/net/*.[ch]。我想了解示例代码如何使用不同位置的文件中存在的方法。

最佳答案

因此您需要了解应用程序是如何构建的。

  1. 所有可执行代码都在 C 文件中定义并转换为机器代码。话虽如此,可能还有用其他语言编写的模块,C 运行时很可能有一些汇编程序源。我们可以将这些称为“翻译单元”,因为它们都是单独翻译的。

  2. 头文件仅包含在这些翻译单元中实现的对象的声明。头文件可以组合多个单元的声明或故意省略一些声明。

  3. 如果您编译自己的包含头文件的源代码之一,则生成的对象文件中将不会有引用对象的代码。

  4. 在链接阶段,链接器组合程序的所有对象模块,解析它们之间的引用。这意味着如果您在一个单元中调用另一个模块中的方法,则该调用将收到正确的地址。

  5. 仍然存在不满意的引用,特别是那些对那些头文件中声明的库方法的引用。链接器搜索默认库和显式给定的库以查找方法。如果找到,它将被添加到代码中,并且调用将收到其地址。

这真的很短。请在网络上搜索更广泛的描述,您会发现很多。

<小时/>

回答您明确的问题:“示例代码如何使用不同位置的文件中存在的方法?”

链接器将这些方法的机器代码添加到模块的机器代码中。它们的源代码的位置无关紧要。链接器知道标准库的位置。如果您使用其他库,请将它们(以及它们的路径,如果需要)添加到命令行。

如果您还有任何其他问题,请编辑您的问题。

关于c - Contiki 中的头文件在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57473532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com