首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ACSL规范中的命名常量

ACSL规范中的命名常量
EN

Stack Overflow用户
提问于 2014-03-17 02:48:24
回答 2查看 172关注 0票数 4

如何在ACSL规范中使用命名常量?这些常量要么是宏(#define MY_CONST ...),要么是常量声明(const int MY_CONST ...)。前者不起作用,因为宏没有被预处理器扩展(ACSL规范是C注释),后者不起作用,因为常量被视为变量,因此某些证明失败。如果我用实际的数字替换命名的常量,那么这个规范就能正常工作。

有没有人有处理命名常量的好主意?提前感谢

EN

回答 2

Stack Overflow用户

发布于 2014-03-17 15:28:07

为了扩展ACSL规范中的宏,可以使用-pp-annot选项。

票数 6
EN

Stack Overflow用户

发布于 2014-04-02 03:42:44

我可以在Pascal Cuoq的帮助下解决这个问题。这实际上不是frama-c的问题,而是gcc的问题。需要-fpreprocessed编译器选项。我的完整命令现在是:

代码语言:javascript
复制
frama-c -cpp-extra-args="-I `frama-c -print-share-path`/libc" -cpp-extra-args="-nostdinc" -cpp-extra-args="-fpreprocessed </path/to/stdc-predef.h>" -wp -wp-rte -pp-annot myfile.c
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22441232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档