【发布时间】:2021-02-07 22:40:22
【问题描述】:
我一直在为 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);
^
它还会导致其他有关括号的错误,尽管this C++ linter 似乎没有检测到此类问题的任何问题。
只有在我向函数传递参数时才会发生这种情况。如果我这样写:
void different() {
Z = (A == 0);
N = (A & 0b10000000) > 0;
}
没有错误发生。
【问题讨论】:
标签: c++