允许在autosar C代码中使用varargs吗?如果没有,为什么?
我对autosar不熟悉。我找到这个文档是为了c++14,它说:
规则A8-4-1 (必需的、实现的、自动的)功能不应使用省略符号定义。
其理由是省略号符号绕过类型检查。建议使用可变模板、函数重载或函数调用链。
对于autosar c,我还没有找到任何关于varargs的规则。在c代码中有针对varargs的规则吗?有什么理由避免吗?有什么方法可以避免这种情况(我需要用字符串格式实现日志功能)?
发布于 2022-12-01 07:52:15
它也在米斯拉。米斯拉C是C,就像AutoSAR C++是C++。它提高了代码质量、安全性和安全性。C中的很多stdlib都是不安全的。但是,特别是没有变量参数的情况下,字符串要难得多。
我所做的(也是日志记录)是创建适合于特定情况下的日志记录的多个函数。一些事情,如log(text, int, int)和log(text, binary data block, size)等,视需要而定。在这些函数中,有对单变量参数函数(通常为snprintf)的调用,它将所有内容打印到日志中。您不是完全兼容,但您是关闭的,变量参数的使用包含在单个特定的代码区域。如果您需要完全兼容,则代码是解耦的,并且易于更改。
https://stackoverflow.com/questions/74638282
复制相似问题