标签: storage-class-specifier

注册与自动存储类?

现在我在这里学习存储类。他似乎对自动存储类和寄存器存储类解释了同样的事情。他两者之间唯一的区别是寄存器存储类存储在CPU寄存器中。这些存储类之间有什么区别吗?寄存器存储类有什么用途吗?在某些 C 编译器上,Register 关键字是默认的吗?

register int x = 5;
auto int y = 3;
Run Code Online (Sandbox Code Playgroud)

c storage-class-specifier

0
推荐指数
1
解决办法
1283
查看次数

寄存器和易失性有什么区别?什么时候用用哪一种?易失性寄存器变量是什么意思?

寄存器和易失性有什么区别?什么时候使用哪一个?易失性寄存器变量的含义是什么?

register int a; volatile int a;

c volatile storage-class-specifier

0
推荐指数
1
解决办法
5417
查看次数

尝试在struct中使用typedef:为什么会出现错误,并且一开始是个好主意?

当尝试从头文件中的结构中通过'typedef'声明别名时出现此错误:

错误:“ typedef”之前的预期specifier-qualifier-list

我最初的目的是测试typedef的范围是否包含在结构中。这样可以避免如果此标头要包含在另一个源文件中,则可以避免不必要地使用此别名。如果我将违规行(以'typedef'开头的行)移到结构外部并在其之前,则将编译代码。

但是,我不明白为什么不能在结构中调用typedef以及为什么会收到上述错误。

此外,我不确定这种做法是否确实必要。限制别名(如果有)的优点是什么?

#ifndef STUDENT_H
#define STUDENT_H

typedef struct{

    typedef char* string;
    string name;
    int id;

} Student;

#endif
Run Code Online (Sandbox Code Playgroud)

我希望代码可以编译,但是却收到错误消息:

错误:“ typedef”之前的预期specifier-qualifier-list

c struct typedef storage-class-specifier

0
推荐指数
1
解决办法
76
查看次数

为什么编译器不检查覆盖函数的存储类?

#include <iostream>

class A{
public:
  void printit(register int b) {
     std::cout<<"inside A";
  }
};

class C:public A{
public:
  void printit(int b) {
     std::cout<<"inside C";
  }
};

int main() {
C c;
c.printit(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,printit 是 C 中的一个重写方法,没有存储类寄存器。但是,编译器仍然匹配,并且代码打印“inside C”。为什么寄存器 int 与 int 匹配?

c++ overriding storage-class-specifier

0
推荐指数
1
解决办法
85
查看次数

为什么存储类称为类?

auto、register、static 和extern 在C 中被称为存储类。但是为什么在C 中没有类的情况下将它们称为类呢?

c class storage-class-specifier

-1
推荐指数
1
解决办法
66
查看次数