折木H.O. 2023-02-17 15:28 采纳率: 0%
浏览 43

C语言中对函数圈复杂度计算包含宏分支和goto语句分支吗

C语言中对函数圈复杂度的计算会算上以下两种分支吗?
(1)会不会算上宏的分支?如下增加了一个if宏判断,圈复杂度会+1吗?

//原代码段
a = 10;
//增加了宏分支的
#if IS_ENABLE(XXXX_MODULE_CONFIG)
        a = 10;
#else
        a = 5;
#endif

(2)会不会算上goto语句的分支?如下增加一个goto语句,圈复杂度会+1吗?

//原代码段
if (x) {
        y = 0;
        goto remove_dev;
}

remove_dev:
        xxxxxxx;
//增加了goto的代码段
if (x) {
        y = 0;
        goto remove_dev;
}
if (m) {
        n = 0;
        goto free_table;
} 

free_table:
        //语句省略
remove_dev:
        //语句省略
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-02-17 15:37
    关注

    宏不会,宏是在编译器就会确定下来的
    goto应该也不会,虽然是调整,但只是一条执行路线

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表
  • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符