将值作为参数传递时出现“类型名称不允许指定存储类”错误

我一直在为 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 关键字?

以上是将值作为参数传递时出现“类型名称不允许指定存储类”错误的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>