【发布时间】:2023-02-12 00:12:50
【问题描述】:
我正在使用 VS 代码。以下所有描述都发生在 VS Code 环境中。
我得到了一个标头,其中定义了名称空间“Loki”,称为“Typelist.h”
我正在尝试在此标头中定义的命名空间内使用结构。
我做了:
# define LOKI_TYPELIST_1(T1) ::Loki::TypeList<T1, ::Loki::NullType>
# define LOKI_TYPELIST_2(T1, T2) ::Loki::TypeList<T1, LOKI_TYPELIST_1(T2)>
通常,我认为当我尝试键入 ::Loki::[Something from namespace Loki] 时它应该给我智能感知,但它没有显示任何内容。
甚至,当我在定义 LOKI_TYPELIST_2 时尝试使用 LOKI_TYPELIST_1 时,它也不起作用。
这里发生了什么?为什么 vscode-cpptools 扩展不为宏定义内的命名空间声明提供智能感知?
附言我确实在当前标题中包含了“Typelist.h”。
【问题讨论】:
-
你为什么要为此使用
#define? -
@NathanPierson 我正在定义类型列表的别名
-
听起来像是
using的案例。 -
@NathanPierson 抱歉,'Loki' 已经是我的命名空间
-
我说的不是
using namespace Loki;,我是说template<class T> using LokiTypeList1 = ::Loki::TypeList<T, ::Loki::NullType>;。尽管如果您已经在Loki命名空间中,其中的一堆Lokis 可能是多余的。
标签: c++ templates visual-studio-code macros namespaces