我最近遇到了这个片段:
extern const uint8_t server_root_cert_pem_start[] asm("_binary_server_root_cert_pem_start");
// ^^^^^^^^^^^^^ what's going on here?
在esp-idf 示例中(第 74 行)。我看不懂声明,我的网上搜索也没有成功。我最好的猜测是这段代码:
用作
uint8_t
替代品,char
因为它们具有相同的大小(1 个字节)。不知道为什么最终通过在我们的模块之外指定
长度的字符串长度推断数组大小来声明一个字符串(const char
数组)
即使我的假设是正确的,我也无法理解为什么要这样写,或者在这种情况下“空终止”会发生什么。所以实际的问题:
- 这段代码在做什么?
- 为什么这样做(优点)?
- 是否有任何含义可以将其与简单的 C 风格声明区分开来?