__attribute__((at( )))
时间: 2023-11-22 07:42:51 浏览: 83
__attribute__((at())) 是C语言中的一个特殊属性,用于指定变量或结构位域在内存中的绝对地址。通过在变量或结构位域的声明中添加 __attribute__((at())),可以将其定位到指定的内存地址上。
引用中的示例代码 const uint8_t ucaSysFlashVal[] attribute((at(0x08010000))) = {0x11, 0x22, 0x33, 0x44}; 就是将 ucaSysFlashVal 数组定位到了地址 0x08010000 处。这样可以确保这个变量被放置在指定的内存地址上,而不是由编译器自动分配。
在添加了 __attribute__((at())) 后,RO Data(只读数据)的大小发生了变化,因为我们明确指定了这个数据的位置,编译器会根据指定的地址在 FLASH 中分配空间。在 bin 文件中,我们可以看到在指定地址之前的部分会由全 0 填充。
相关问题
__attribute__ at
__attribute__ section是用于将特定变量或函数放置在指定代码段(section)的GCC编译器扩展语法。在编译时,可以使用__attribute__((section("section_name")))将函数或变量置于指定代码段中。这有助于对不同的代码片段进行优化,并控制可执行文件的大小和布局。
keil __attribute__ at出现警告
在Keil中,使用`__attribute__`会产生警告。根据引用中的描述,`__attribute__((deprecated))`用于声明一个废弃的变量,编译器会发出警告,但仍然会编译通过。警告会显示变量的使用位置和定义位置,以帮助确定为什么特定的定义被弃用。所以当使用`__attribute__`时,Keil编译器会生成警告。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [FFMPEG4.1源码分析之 过时代码管理 attribute_deprecated](https://blog.csdn.net/ice_ly000/article/details/90173153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文