[问题] __packed type 传递问题

楼主: eleghost (eleghost)   2021-04-08 19:10:34
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Keil C
问题(Question):
我想要宣告一块连续内存, 利用__packed包住让两个阵列中间没有padding.
但当要对这块内存存取时, 或传递到 void* 变量时, 会发生error.
请问这个有法解决吗? thanks
错误结果(Wrong Output):
Error: argument of type "__packed int16_t *" is incompatible with
parameter of type "void *"
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
http://pastie.org/p/6IyFOaduXr98h7CzkumZeB
补充说明(Supplement):
作者: CMJ0121 (请多指教!!)   2021-04-08 22:23:00
你提供的 source code 我在 gcc 10.2.0 可以编的过不过要稍微修改成 recursive / callee(_Buf.buf1, NULL .
作者: Lipraxde (Lipraxde)   2021-04-08 22:27:00
你的 callee 的参数也改成 __packed 看看https://bit.ly/39TCxLK ,看 Errors 那边大多数嵌入式芯片在存取 nonaligned 的东西时会变得很没效率,建议还是分两个版本吧。

Links booklink

Contact Us: admin [ a t ] ucptt.com