带内联程序集的C数组声明
我最近发现了这样一个片段:带内联程序集的C数组声明,c,gcc,inline-assembly,esp-idf,C,Gcc,Inline Assembly,Esp Idf,我最近发现了这样一个片段: extern const uint8_t server_root_cert_pem_start[] asm("_binary_server_root_cert_pem_start"); // ^^^^^^^^^^^^^ what's going on here? 在(第74行)中。我无法理解声明,我的在线搜索也没有成功。我最好的猜测是以下代码: 使用uint8\u t替换
extern const uint8_t server_root_cert_pem_start[] asm("_binary_server_root_cert_pem_start");
// ^^^^^^^^^^^^^ what's going on here?
在(第74行)中。我无法理解声明,我的在线搜索也没有成功。我最好的猜测是以下代码:
- 使用
替换uint8\u t
,因为它们的大小相同(1字节)。不知道为什么char
- 通过从模块外部指定长度的字符串长度推断数组大小,最终声明一个字符串(a
array)const char
- 这段代码在做什么
- 为什么这样做(优势)
- 它与简单的C风格声明有什么区别吗李>
- 这取决于编译器。然而,我的猜测是,这段代码声明了一个名为server\u root\u cert\u pem\u start的数组,并将其绑定到另一个符号(内存位置)\u binary\u server\u root\u cert\u pem\u start可能是在其他地方定义的(在汇编文件中?)是的,这是GNU C语法,用于设置变量的asm符号名,例如硬编码前导的
。