【发布时间】:2020-10-31 05:52:20
【问题描述】:
C 中是否有语法让编译器知道某个变量已完成并且今后将不再使用,从而可能释放寄存器?我宁愿不使用函数调用,因为它们很昂贵。
我知道我可以重用一个变量,但这会导致歧义(这个变量是什么意思?)。
例子:
first_byte = somestring[0];
/*[do a couple of operations on first_byte]*/
done_for(first_byte);
second_byte = somestring[1];
我没有将数组+索引直接提供给我的操作的原因是因为我不确定是否所有编译器都会优化它以使用临时寄存器而不是每次都转换地址。
不,我不能使用像“temp”这样的名称。这是关于读取打包数据结构的。
【问题讨论】:
-
在函数块内定义变量。
-
@KamilCuk 所以它不会将“多余”变量放在(慢)堆栈上?
-
编译器已经分析了变量的活跃度。你不需要做任何事情来帮助他们。
-
@FiddlingBits 大括号中的语句相当复杂。
-
留给编译器。只需启用优化。编译器将决定是否必须将其存储在某个地方。或者开始用汇编程序编程。
标签: c variables cpu-registers