c - 指针定义上的语法错误似乎有效(来自工作库)SDCC

标签 c pointers keil sdcc

我正在尝试为 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 节中:

enter image description here

您的声明遵循同一范围 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/

相关文章:

c - 当我在它之前/之后使用 printf() 时,为什么 "malloc(): corrupted top size"错误会得到修复?

c - 显示随机数数组的问题

c - 使用指针在 C 中解析 TFTP 数据包的字符串

c++ - 如何在数组中使用指针?

c - 当指针值改变时,堆作用域会成功释放吗?

c - MDK-ARM C : While loop won't break after interrupt

我们可以修改 const 变量的值吗?

c - if else 代码块……或者一个 if 里面有多个 OR ( | |) 条件?在 C

c++ - 有没有办法在子范围内有一个指向父(派生)类的指针?

c++ - nrf51882a 入门