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

时间:2018-01-05 10:52:37

标签: c pointers keil sdcc

我正在尝试为Crazyradio PA编译固件(但问题并非特定于此),我在其中添加了一个我需要的Nordic Semiconductor SDK库。

这个库最初是在KeilμVisionIDE下编译的,所以我自然地改变了代码中的所有内容,以便它可以在没有太多麻烦的情况下使用SDCC,但简单的指针定义让我苦苦挣扎。 SDCC编译器给我这个错误:

syntax error: token -> 'unsigned' ; column 10

这对应于代码中的这一行:

unsigned char * buf = (unsigned char *)pbuf;

pbuf是一个unsigned char指针,作为函数的一个参数传递,其中所有这些代码都是。

我尝试了以下操作,但未成功:

  • 更改buf的数据类型(任何内容,只是为了查看)
  • 通过在
  • 之前和之后注释掉行来隔离问题
  • 指定一个简单值而不是(unsigned char *)pbuf

问题仍然存在(当然数据类型的差异也会发生变化)。解决方案可能很简单,但我的想法很简短,我只是一个对SDCC经验不足的实习生,所以我希望你会放纵。

再次感谢,请教我任何我做错的事情! :)

1 个答案:

答案 0 :(得分:3)

检查SDCC documentation是否符合标准 - 它在所有模式中都有一些非常严重的偏差 - 特别是在3.1.3节中:

enter image description here

您的声明遵循同一范围块内的非声明。将所有声明移到scope-block的顶部或启动一个新的scope-block:

memtype = *(unsigned char*)(&pbuf);

// Start scope block for buf scope...
{
    unsigned char * buf = (unsigned char *)pbuf;

    // buf accessible on this scope only
    ...

}