我正在尝试为 Crazyradio PA 编译固件(但问题并非特定于此),其中我添加了 Nordic Semiconductor 的 SDK 所需的库。
该库最初是要在 Keil µVision IDE 下编译的,所以我自然地更改了代码中的所有内容,以便它可以轻松地与 SDCC 一起使用,但简单的指针定义让我很挣扎。 SDCC 编译器给我这个错误:
syntax error: token -> 'unsigned' ; column 10
对应代码中的这一行:
unsigned char * buf = (unsigned char *)pbuf;
pbuf 是一个无符号字符指针,作为所有这些代码所在的函数的参数传递。
我尝试了以下方法,但没有成功:
- 更改 buf 的数据类型(更改为任何类型,只是为了看看)
- 通过注释掉前后行来隔离问题
- 分配一个简单值而不是 (unsigned char *)pbuf
问题仍然是一样的(数据类型的差异当然也会改变)。解决方案可能很简单,但我的想法还不够,而且我只是一个对 SDCC 经验很少的实习生,所以希望您能宽容。
再次感谢,请告诉我我做错了什么! :)
最佳答案
检查SDCC documentation对于标准合规性 - 它在所有模式中都有一些相当严重的偏差 - 特别是在第 3.1.3 节中:
您的声明遵循同一范围 block 内的非声明。将所有声明移至作用域 block 的顶部或开始一个新的作用域 block :
memtype = *(unsigned char*)(&pbuf);
// Start scope block for buf scope...
{
unsigned char * buf = (unsigned char *)pbuf;
// buf accessible on this scope only
...
}
关于c - 指针定义上的语法错误似乎有效(来自工作库)SDCC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48112078/