C++ 编译器不喜欢 "using INLINE = extern inline"

标签 c++ c++11 inline

有很多关于 inline 的使用以及如何正确执行此操作以达到所需目的的信息,例如此处(我目前将其用作引用)Inline Functions in C .

当我尝试实现页面中指定的内容时,出现编译器错误

using INLINE = extern inline;

甚至只是

using INLINE = extern;

编译器说“在 extern 之前需要类型说明符”

我想知道的是为什么我可以这样使用using

是因为 using 真的只是为类型和替换保留的吗?

发布答案

非常感谢!我完全错过了我正在阅读 C 引用资料这一事实。这是个好消息,因为从我读到的内容来看,似乎没有真正好的方法来处理事情,但可能就是这样,因为与他们现在在 C++11 中所做的相比,它已经过时了.

最佳答案

Is it because using is really just reserved for types and substitutions?

我不知道您所说的替换是什么意思,但是对于类型的保留是肯定的。别名声明用于为类型 声明新名称。一对说明符不构成类型。您甚至无法通过在其中表面添加类型名称来使其工作,因为 externinline 说明符仅适用于对象和函数标识符,而不适用于它们的关联类型。

这篇文章使用了一个宏 (#define),因为标记替换是创建用户定义说明符的唯一方法,就像您想要的那样。

还值得注意的是,在 C++ 中,inlineextern inline 是同一回事。只有在 C(与 C++ 不同的语言,以及链接文章的主题)中,inline 并不意味着链接,需要您指定 extern

关于C++ 编译器不喜欢 "using INLINE = extern inline",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50673954/

相关文章:

java - 内部类的实例化

c++11 按值捕获 lambda 产生错误的值

c++ - macOS 上莫名其妙的 OpenGL 着色器行为

c++ - C++ 中并行 vector 的 find_first

c++ - 使用 concurrent_unordered_map 时崩溃

c++ - 为什么在 C++11 或 C++14 中,当我声明移动赋值运算符时,编译器会隐式删除复制构造函数?

c++ - 我应该通过引用或值将参数传递给内联函数吗?

c++ - C++ 和汇编程序之间的 Scanf 函数

c++ - 空闲期后 Redis PUBSUB 连接问题

c++ - 正确锁定从多个线程调用其自己的成员函数的类。 (我需要锁定访问 "this"指针吗?)