很多编码人员习惯于在单行注释时使用双斜线(//),因为输入方便。 不过VxWorks的开发人员可能就会遇到一个问题了 上图是在Workbench的DKM工程里添加一个c文件,该文件中只包含一个双斜线,编译工程就报错了:expected identifier or '(' before '/' token 从gnu的手册中,可以看到-ansi等同于-std=c89,而c89那个年代,是不支持双斜线的 问题找到了,怎么解决呢?最简单粗暴的办法就是 -- 删了它! 再编译一下试试 搞定了! 荆溪惠子鬓鬅鬙,义理钻研到粹精。只是搞定还不行,我们还要知道为什么搞定。继续看手册 原来删除-ansi后,IDE就会将规则重置为-std=gnu89,而正是gnu89对c89做了一些扩展,其中就包含了这个双斜线注释。 试一下,都没有问题。 直接在User Flags里填写就可以了。 这就是gnu编译器编译双斜线注释的问题。 试一下,果然没问题。难道diab默认没有使用ansi选项?看一下Build Console,它用的选项是-Xansi 这是什么鬼?看看diab手册,-Xansi的全称是-Xdialect-ansi。原来是厂家专门做的改进,就像是gnu89对c89的改进。 看看它改进了哪些,果然有这一条 |
|