news 2026/6/24 2:35:45

C/C++语言独立有效代码行,如何确定是真正的一个独立的有效代码行?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C/C++语言独立有效代码行,如何确定是真正的一个独立的有效代码行?

来自重点研发计划课题《面向海洋环境预测领域的高效求解技术与应用计算软件》对WRF软件的中间的分析过程。编号:2025YFB3003605。

C/C++语言由于其格式的自由,一行代码实际上并不真的是一行代码

1)类似这种

#define MAX(a,b) ( ((a) >= (b)) ?(a):(b) ) #define MIN(b,c) ( ((b) < (c)) ?(b):(c) )

这个define算是一行,因为后面行跟它本身是独立的

2)

int Nfun,Njac,Nstp,Nacc,Nrej,Ndec,Nsol,Nsng;

这个是真正的独立代码行

3)

#define DeltaMin (KPP_REAL)1.0e-6 /*~~~> Collect statistics: global variables */ int Nfun,Njac,Nstp,Nacc,Nrej,Ndec,Nsol,Nsng;

上面这个其实真正有效的代码行只有两行

空白行和注释行在程序执行层面都没有意义。

4)

/*~~~> Function headers */ void FunTemplate(KPP_REAL, KPP_REAL [], KPP_REAL []); void JacTemplate(KPP_REAL, KPP_REAL [], KPP_REAL []) ; int Rosenbrock(KPP_REAL Y[], KPP_REAL Tstart, KPP_REAL Tend, KPP_REAL AbsTol[], KPP_REAL RelTol[], void (*ode_Fun)(KPP_REAL, KPP_REAL [], KPP_REAL []), void (*ode_Jac)(KPP_REAL, KPP_REAL [], KPP_REAL []), KPP_REAL RPAR[], int IPAR[]); int RosenbrockIntegrator( KPP_REAL Y[], KPP_REAL Tstart, KPP_REAL Tend , KPP_REAL AbsTol[], KPP_REAL RelTol[], void (*ode_Fun)(KPP_REAL, KPP_REAL [], KPP_REAL []), void (*ode_Jac)(KPP_REAL, KPP_REAL [], KPP_REAL []), int ros_S, KPP_REAL ros_M[], KPP_REAL ros_E[], KPP_REAL ros_A[], KPP_REAL ros_C[], KPP_REAL ros_Alpha[],KPP_REAL ros_Gamma[], KPP_REAL ros_ELO, char ros_NewF[], char Autonomous, char VectorTol, int Max_no_steps, KPP_REAL Roundoff, KPP_REAL Hmin, KPP_REAL Hmax, KPP_REAL Hstart, KPP_REAL FacMin, KPP_REAL FacMax, KPP_REAL FacRej, KPP_REAL FacSafe, KPP_REAL *Texit, KPP_REAL *Hexit );

上面实际上只有4行代码,只是有些参数有点多。

5)

int a; double b; float c;

这个其实是三行代码

6)

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ void INTEGRATE( KPP_REAL TIN, KPP_REAL TOUT ) /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ { static KPP_REAL RPAR[20];

这个其实是二行代码

IPAR[3] = 5; /* choice of the method */ IERR = Rosenbrock(VAR, TIN, TOUT, ATOL, RTOL, &FunTemplate, &JacTemplate, RPAR, IPAR); Ns=Ns+IPAR[12];

这个其实是三行代码。

printf("\n Step=%d Acc=%d Rej=%d Singular=%d\n", Ns,Na,Nr,Ng); if (IERR < 0) printf("\n Rosenbrock: Unsucessful step at T=%g: IERR=%d\n", TIN,IERR);

这个是二行代码。

7)

if (RPAR[1] == ZERO) Hmax = ABS(Tend-Tstart); else Hmax = MIN(ABS(RPAR[1]),ABS(Tend-Tstart));

这个又复杂了一点。

8)

if (RPAR[2] == ZERO) Hstart = MAX(Hmin,DeltaMin); else Hstart = MIN(ABS(RPAR[2]),ABS(Tend-Tstart)); if (RPAR[2] == ZERO) Hstart = MAX(Hmin,DeltaMin); else Hstart = MIN(ABS(RPAR[2]),ABS(Tend-Tstart));

这两个是正确的格式吗?可能跟编译器相关。

if (RPAR[4] == ZERO) FacMax = (KPP_REAL)6.0; //这个应该是可以的

9)

switch (Method) { case 1: Ros2(&ros_S, ros_A, ros_C, ros_M, ros_E, ros_Alpha, ros_Gamma, ros_NewF, &ros_ELO, ros_Name); break;

case 1这个应该算独立一行

10)总结 下,

C代码的分行,实际 上以

;

:

{}

等为分界。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 17:31:14

词典约束是否存在?测试HunyuanOCR对专业术语的识别能力

HunyuanOCR如何突破词典限制&#xff1a;专业术语识别的实战验证 在医疗影像报告中&#xff0c;“PD-L1”被误识为“P D L ONE”&#xff1b;在工程图纸上&#xff0c;“torsional shear stress”被拆成三个孤立单词&#xff1b;一份双语合同里的“force majeure”直接消失不见…

作者头像 李华
网站建设 2026/6/9 9:42:01

MyBatisPlus整合HunyuanOCR后端服务:构建结构化数据存储OCR系统

MyBatisPlus整合HunyuanOCR后端服务&#xff1a;构建结构化数据存储OCR系统 在金融、政务和物流等行业&#xff0c;每天都有成千上万的纸质票据、身份证件、合同文件需要录入系统。传统方式依赖人工抄录或分阶段OCR处理&#xff0c;不仅效率低&#xff0c;还容易出错。随着大模…

作者头像 李华
网站建设 2026/6/13 18:35:33

实时快速卷积——交叠相加、交叠存储

如果输入信号 特别特别长&#xff08;比如一段 1 小时的音频&#xff09;&#xff0c;或者信号是实时源源不断进来的&#xff08;比如直播语音&#xff09;&#xff0c;你就不能等信号全部录完再做一次超大的 FFT。这就好比你要吃一根无限长的面条&#xff0c;你不能一口气吞下…

作者头像 李华
网站建设 2026/6/13 1:57:41

WaterGasUtility水务燃气账单处理:HunyuanOCR节省人力成本

WaterGasUtility水务燃气账单处理&#xff1a;HunyuanOCR节省人力成本 在城市公共服务的后台&#xff0c;每天都有成千上万张模糊、倾斜甚至带反光的账单照片被上传——来自居民随手一拍的水费通知单、燃气表读数截图&#xff0c;或是老旧社区手写的缴费凭证。这些图像五花八门…

作者头像 李华
网站建设 2026/6/16 14:30:56

xhEditor导入Latex公式生成图片

企业网站Word粘贴与导入功能解决方案 项目概述与技术需求 作为山西IT行业的.NET工程师&#xff0c;我们近期接到一个企业网站后台管理系统的升级需求&#xff0c;主要目标是实现Word内容一键粘贴和文档导入功能。这个功能将极大提升客户的内容发布效率&#xff0c;特别是对于…

作者头像 李华