背景: MCU:MKL26Z128 IDE:Kinetis Design Studio 3.0.0
此代码将usbStringDescriptors的地址设置为零。
uint8_t usbStringDescriptors[NUM_OF_STRING_DESCRIPTORS][MAX_BYTES_PER_USB_STRING] = {0};
uint8_t manStringDescriptor[MAX_BYTES_PER_USB_STRING] = {0};
...来自列表文件
225 .LFE57:
227 .global usbStringDescriptors
228 001e C046 .section .bss.usbStringDescriptors,"aw",%nobits
229 .align 2
232 usbStringDescriptors:
233 0000 00000000 .space 198
233 00000000
233 00000000
233 00000000
233 00000000
234 .global manStringDescriptor
235 00c6 0000 .section .bss.manStringDescriptor,"aw",%nobits
236 .align 2
239 manStringDescriptor:
240 0000 00000000 .space 66
...在地图文件中
.bss.usbStringDescriptors
0x00000000 0xc8 ./adapter/common/usb_core_ksdk/host/host_iAP.o
此代码没有。
uint8_t usbStringDescriptors[NUM_OF_STRING_DESCRIPTORS][MAX_BYTES_PER_USB_STRING];
uint8_t manStringDescriptor[MAX_BYTES_PER_USB_STRING];
...来自列表文件
225 .LFE57:
227 .comm usbStringDescriptors,198,4
228 .comm manStringDescriptor,66,4
答案 0 :(得分:0)
由于这些数组具有静态存储,因此无论是否放置{0}
初始化程序,几乎没有区别。当控件到达main()
函数时,它们将初始化为0
。
出于上述原因,第二种选择是首选。