Advertisement

MISRA-C编码标准解读:Rule 4.1至Rule 4.2

阅读量:

前言

在本文中,我们将聚焦于规则4.1和4.2,这两个规则关注于源代码中的字符表示。

规则 4.1 (必须): 仅允许使用ISO C标准中定义的转义序列。

此规则专有地规定开发人员必须仅使用ISO C标准中定义的转义序列。这表明包括十六进制转义序列在内的除\0以外的所有八进制转义序列均不可采用。

示例

复制代码
    #include <stdio.h>
    
    int main() {
    /* 使用标准转义序列 */
    printf("Hello, World!\n");
    /* 使用非标准的十六进制转义序列 'A' */
    printf("This is not allowed:\ x41\n");
    
    return 0;
    }
    
    
    c
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/cPIVlgEmzSdKqpFBOMQvjsf7145U.png)

规则 4.2 (必须): 不得使用三字符序列。

这种三字符序列由两个问号后面紧跟一个特定的第三个字符构成(如??-所示,则表示一个‘~’(波浪线)字符)。这些符号可能会让人误解或混淆于其他仅使用两个问号的情况。

示例

复制代码
    #include <stdio.h>
    
    int main() {
    /* 不使用三字符序列 合理 */
    printf("Question mark: ?\n");
    /* 使用三字符序列 不合理 */
    printf("??( is a trigraph for '{'\n");
    
    return 0;
    }
    
    
    c
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-07-13/5inwK71yoB0fHabdpYjQcS8mq9lA.png)

总结

依照MISRA-C规范中的第4.1条及第4.2条要求,在本项目中应严格遵循只采用标准转义序列并彻底禁止任何三字符转义序列的应用模式。这将有助于确保代码能够实现跨平台兼容性,并有效降低潜在语法错误的可能性,并进一步提升代码的整体质量和可读性。

全部评论 (0)

还没有任何评论哟~