问题标签 [storage-class-specifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么静态和注册存储类不能一起使用?
以下列方式定义变量时:
我们得到错误:
这个错误有什么根本原因吗?为什么变量不能既存储在寄存器中,也只能在启动/第一次调用时初始化?可以将寄存器存储类附加到全局变量。<- 编辑:不是真的
c - 为什么我需要声明这个函数extern。没有它也能工作
我是外部概念的新手。今天在工作中,我遇到了大量在头文件中声明的外部函数;foo.h. 在一堆文件夹的某个地方,我发现了一个 foo.c 文件,其中包含所述函数的定义,但它没有#include foo.h
。回到家后,我决定尝试使用外部存储类示例。在“C书”中做了一些阅读之后,这就是我想出的。
这是我没想到的。但确实如此。
主程序
外部人员.c
重击
我不认为这会起作用,因为该函数在 main 之前没有在技术上(或至少是冗长的)定义。这是否有效,因为默认存储类int getData()
是extern
?如果是这样,为什么还要费心下面的例子(类似于我在工作中看到的)?
main2.c
外部人员.h
外部人员.c
重击
constants - 不可变成员函数和 const 成员函数有什么区别?
D 编程语言参考在声明和类型限定符部分显示了两个示例,因此这些都是可能的:
从文档:
const 成员函数是不允许通过成员函数的 this 引用更改对象的任何部分的函数。
和:
不可变成员函数保证 this 引用所引用的对象和任何东西都是不可变的。
我找到了这个问题,但所有的答案都是关于数据类型,而不是存储类。D const FAQ也是如此,尽管它读起来很有趣。
那么上面的两个定义有什么区别呢?是否有可以替代//const stuff
且合法但不合法的表达式//immutable stuff
?
c++ - 为什么可变说明符被分类为存储类说明符,而不是限定符?
当在mutable
非静态数据成员的声明中使用说明符时,无论对象的其余部分是否被视为 const,数据都是可变的。有了这个事实,我们很容易有这样的印象,即说明符与限定符mutable
是同一类东西const
,事实证明这不是真的。实际上,语言将mutable
说明符分类为存储类说明符。这是非常违反直觉的,因为mutable
没有指定存储持续时间。
这个设计决策背后的基本原理是什么?
mutable
如果是限定词 ,什么会使它看起来不那么合乎逻辑?
使其成为存储类说明符有什么好处?
c++ - constexpr 静态模板函数:g++ 错误是关于 clang 的警告
考虑以下代码段:
这段代码可以很好地与 g++ 和 clang 一起编译。非常好。现在添加static
到模板函数特化:
然后 g++ 6.1 会出现错误:
11:错误:显式模板特化不能有存储类
还有clang 3.8:
11:错误:显式特化具有无关的、不一致的存储类“静态”
他们看起来很一致。再次非常好。现在,static
在模板函数一般情况下添加关键字:
g++ 6.1:
11:错误:显式模板特化不能有存储类
clang 3.8 编译时出现警告:
11:警告:显式特化不能有存储类
并且铿锵的结果返回正确的答案。
这是clang中的错误吗?如果不是,在哪种情况下不抛出错误有意义?
c - 注册与自动存储类?
现在我在这里学习存储类。他似乎对自动存储类和寄存器存储类解释了同样的事情。他唯一区分两者的是寄存器存储类存储在CPU寄存器中。这些存储类之间有什么区别吗?寄存器存储类的任何用途?在某些 C 编译器上是否默认注册关键字?
c - 默认全局变量的存储类(gcc编译器)?
在C中,(GCC编译器),全局变量的默认存储类是什么?
让我分享一个代码,例如:
如果我说该变量i
是 static 而不是 extern ,我是否正确?
c++ - c++ 显式模板实例化存储类允许但被忽略
我注意到存储类说明符可以放在模板实例化中,并且不会产生编译器错误。我知道存储类可以在模板设计中使用,并且不能在专门化中使用,但是想知道为什么它在实例化中没有被编译器拒绝。我尝试了不同的组合,它似乎对链接没有影响。请问我错过了什么吗?
编辑:请注意,我将模板实例放置在与使用它的位置不同的 .cpp 中(以测试链接),尽管在代码段中并不清楚。
c - c中全局变量的替代方案
静态变量是全局变量的替代品吗?如果不是。那么 C 语言中全局变量的替代方案是什么?我期待你的回答谢谢你提前
c++ - 关于 C++ 中 auto 关键字的困惑
我对以下代码感到困惑:
我在GCC下编译了上面的代码,但是我得到了以下错误:
但是,如果我删除int
类型,就像这样:
然后它运行成功。
auto
是存储类并且int
是数据类型,那么为什么在第一种情况下会出现错误“两种或多种数据类型”?