autosar c中的变量

vulvrdjw  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(109)

是否允许在autosar C代码中使用varargs?如果不允许,为什么?
我不熟悉autosar。我found这份文件的c++14,其中说:
规则A8-4-1(必需、实现、自动)函数不应使用省略符号进行定义。
原因是省略符号绕过了类型检查。推荐使用可变模板、函数重载或函数调用链。
我还没有找到任何关于autosar c的varargs的规则。在c代码中是否有任何反对varargs的规则?是否有任何理由避免它?是否有任何方法可以避免它(我需要实现一个带有字符串格式的日志记录函数)?

k3bvogb1

k3bvogb11#

Misra也是如此。Misra C对于C就像AutoSAR C对于C一样。它提高了代码质量、安全性和可靠性。C中的许多stdlib内容是不安全的。但尤其是没有变量参数的字符串要困难得多。
我的工作(也用于日志记录)是创建多个函数,这些函数适用于特定情况下的日志记录。如log(text, int, int)log(text, binary data block, size)等。在这些函数中,调用了单变量参数函数(通常是snprintf),它将所有内容打印到日志中。您并不完全兼容,但已接近,并且变量参数的使用包含在单个特定的代码区域中。如果需要完全兼容,则代码已解耦,并且更易于更改。

相关问题