【问题标题】:"Type name does not allow storage class to be specified" error when passing value as argument将值作为参数传递时出现“类型名称不允许指定存储类”错误
【发布时间】: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++


    【解决方案1】:

    register 是一个(不推荐使用的)关键字。为变量选择一个不同的名称。

    见:

    【讨论】:

      猜你喜欢
      • 2012-05-22
      • 2015-10-08
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      相关资源
      最近更新 更多