将值作为参数传递时出现“类型名称不允许指定存储类”错误
我一直在为 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...
};
这会导致错误:
error: type name does not allow storage class to be specified
Z = (register == 0);
^
它还会导致其他有关括号的错误,尽管这个 C++ linter似乎没有检测到这些东西的任何问题。
只有当我向函数传递一个参数时才会发生这种情况。如果我写这样的东西:
void different() {
Z = (A == 0);
N = (A & 0b10000000) > 0;
}
不会发生错误。
回答
register是一个(不推荐使用的)关键字。为变量选择一个不同的名称。
看:
- C++中的注册关键字
- 为什么要创建 register 关键字?