打印

子程序编译时实现参数监测--基于KEILC--STM32

[复制链接]
1379|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
magic_yuan|  楼主 | 2014-1-4 15:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,
  系统软件设计时编写了若干子程序。这些子程序的输入参数必须在一定范围,如果不在一定范围则执行出错。
但由于系统应用的需要,希望在编译阶段即提示调用的子程序给定参数不在范围之内。如:子程序输入参数A,其值必须小于10,若在程序编写调用这个子程序时传递值A=11,则在编译时就报错提醒。
  不知道KEILC有没有这个功能。我用的是MDK3.8A版本,对STM32编写程序!
  十分感谢!

相关帖子

沙发
dirtwillfly| | 2014-1-4 20:51 | 只看该作者
预编译的时候貌似没有这种功能吧。建议楼主在子程序中增加参数检测及错误提示语句

使用特权

评论回复
板凳
magic_yuan|  楼主 | 2014-1-4 22:10 | 只看该作者
dirtwillfly 发表于 2014-1-4 20:51
预编译的时候貌似没有这种功能吧。建议楼主在子程序中增加参数检测及错误提示语句 ...

多谢大侠,
  程序中肯定会引入参数范围判断,但这样需要执行时才能弹出语句提醒参数范围不对。这时候已经有点晚了。
在TRUBO C中好像就有这种功能,不过不知道怎么用的。

使用特权

评论回复
地板
john_lee| | 2014-1-5 09:28 | 只看该作者
参数值的合法性检查,是程序员的责任,任何C编译器都不可能代劳,在语法层面就没有这种可能性。

使用特权

评论回复
5
magic_yuan|  楼主 | 2014-1-5 11:09 | 只看该作者
john_lee 发表于 2014-1-5 09:28
参数值的合法性检查,是程序员的责任,任何C编译器都不可能代劳,在语法层面就没有这种可能性。 ...

多谢大侠,
  在一些仪器仪表的本身语言编写的程序性时有参数范围检测,可能对编译器进行了修改?
  如一些ATE自带的语言编译时。

使用特权

评论回复
6
xlsbz| | 2014-1-5 14:33 | 只看该作者
除非用宏定义

使用特权

评论回复
7
magic_yuan|  楼主 | 2014-1-5 14:53 | 只看该作者
xlsbz 发表于 2014-1-5 14:33
除非用宏定义

宏定义?大侠能简要举例?
感谢!

使用特权

评论回复
8
xlsbz| | 2014-1-7 08:34 | 只看该作者
#if   CANSHU  > 3
#error "错啦,再设值错误就回家抱孩子去!"
#endif


另外,有些场合  像参数设置的范围,一般来说,没有必要编译时候就发现。除非特别容易忽视。

使用特权

评论回复
9
ayb_ice| | 2014-1-7 08:58 | 只看该作者
有个断言的宏吧

使用特权

评论回复
10
magic_yuan|  楼主 | 2014-1-7 11:22 | 只看该作者
xlsbz 发表于 2014-1-7 08:34
#if   CANSHU  > 3
#error "错啦,再设值错误就回家抱孩子去!"
#endif

呵呵,多谢大侠。
   我做的是个ATE平台,一些菜鸟乱设参数,所有参数范围十分重要!

使用特权

评论回复
11
w522930954| | 2014-1-7 14:51 | 只看该作者
#pragma message"提示一下"
或者用断言宏。。具体可百度一下。。。

使用特权

评论回复
12
wx85105157| | 2014-1-10 09:57 | 只看该作者
枚举?不过好像就不能变量赋值了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:发到3000帖时,生活大概完成了一种转折。

359

主题

2770

帖子

7

粉丝