c - 有没有办法告诉 C 编译器内联变量?
问题描述
我是一个相对较新的 C 程序员,我正在编写一个国际象棋程序,我想确保它尽可能快地运行。这是我的程序在循环中的一段代码,在该循环中我正在编码移动到一个 16 位变量中。每个方格占用 6 位。
Square targetSquare = GET_LS1B(leftPawnAttacks);
moveList[i] = (targetSquare << 4) | ((targetSquare - 7) << 10);
为了提高可读性,我想做的是定义一个新变量,originSquare
如下所示
Square targetSquare = GET_LS1B(leftPawnAttacks);
Square originSquare = targetSquare - 7;
moveList[i] = (targetSquare << 4) | (originSquare << 10);
所以前 6 位代表移动的原点方格,接下来的 6 位代表目标方格。在这个特定的循环中,所有的移动都是相同的类型:原点距离目标总是-7。
我不想浪费指令声明Square originSquare
并稍后查找其值 1 行,因为循环的这一部分每秒运行数千次。
我的问题是:有没有办法告诉 C 编译器或预处理器将它推targetSquare - 7
到它在这个循环范围内看到的位置originSquare
,即内联变量,还是已经这样做了?
我最好的猜测是,如果我声明变量 const,编译器可能会自行执行此操作,但我想确定并了解有关 C 和编译的更多信息。
解决方案
推荐阅读
- python - 计算非方阵的行列式
- ruby-on-rails - 在 pg_dump 和 pg_restore 之后,本地 PostgreSQL 数据库与 Heroku 上的不同查询计划
- c++ - 初始化变量未返回正确值
- c# - C#如何检查日期时间对象的值是否有一天
- php - 如何在外部 PHP 上使用 Wordpress 函数 - 在任何 wordpress 网站上,不仅仅是我的
- matplotlib - matplotlib 绘图在 vscode 中静默失败,但在同一环境中从 python 解释器工作
- python - 计算 Pagerank 的百分比
- c# - 如何在 WebApi Core 中使用 Unauthorized() 获取空的 http 正文
- azure-ad-b2c - B2C 在登录 REST API 期间不发送电子邮件
- css - Elementor 瞄准运动 CSS 变量