什么是register关键字在C语言吗?我已经读过它用于优化,但在任何标准中都没有明确定义.它是否仍然相关,如果是,你什么时候使用它?
在我的大学时代,我读到了auto关键词,随着时间的推移,我实际上忘记了它是什么.它被定义为:
将局部变量定义为具有本地生命周期
我从来没有发现它在任何地方都被使用过,它是否真的被使用过,如果是的话那么它在哪里被使用?在哪些情况下?
考虑这个程序:
#include <stdio.h>
int main(void)
{
unsigned int a;
printf("%u %u\n", a^a, a-a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是不确定的行为?
从表面上看,它a是一个未初始化的变量.所以这指向未定义的行为.但是a^a并且a-a等于0所有的价值a,至少我认为是这样的.有可能有某种方式来证明行为是明确定义的吗?
我已经读过(这里,例如)register在C++ 11中不推荐使用该关键字.因此,在标准的较新版本中是否存在与此存储类说明符等效的内容,或者它是否由编译器处理?
刚刚遇到C++中的register关键字,我想知道这似乎是一个好主意(将某些变量保存在寄存器中)肯定是编译器默认执行此操作?
所以我想知道这个关键字是否还在使用?
我一直在为 6502 编写仿真器的基础。我有一个函数,我想用它来设置给定寄存器的零标志和负标志。该函数包含在一个名为 的结构体中CPU。
我的代码目前看起来像这样:
#include <stdio.h>
#include <stdlib.h>
#include <cstdint>
typedef uint8_t BYTE;
typedef uint16_t WORD;
typedef uint32_t DWORD;
struct CPU {
BYTE SP; // stack pointer
WORD PC; // program counter
BYTE A, X, Y; // registers
// some more registers, flags, etc.
void SetStatusFlags(BYTE register) {
Z = (register == 0);
N = (register & 0b10000000) > 0;
}
// some other functions that call this one...
};
Run Code Online (Sandbox Code Playgroud)
这会导致错误:
error: type name does not allow …Run Code Online (Sandbox Code Playgroud)