c++ - 如何测试宏是否在全局/命名空间范围内使用?
问题描述
我想写一个标题,让我用类似于以下的语法声明首选项:
declpref("some.pref.name", "description");
哪个注册some.pref.name
了给定的描述和一些全局注册表,所以我可以轻松地反省我的代码声明的偏好,从各种来源设置它们的值等。
在主要魔法之前,我可能会通过某种静态构造来做到这一点:
#define declpref(name, desc) \
{ \
static struct __pref { \
__pref() { \
register_preference(name, desc); \
} \
} __static_pref; \
}
问题是如果在本地范围内使用上面的代码将无法按我想要的方式工作:
void some_function() {
declpref("some.pref", "description"); // won't register until some_function called
}
我认为我可以强制在全局/命名空间范围内完成首选项声明,因为无论如何它们都应该是全局唯一的名称。
我如何检查它被声明的范围并抛出错误?
解决方案
推荐阅读
- recursion - Clojure:如何检查输入是否只有一个序列长?
- sql - 如何从连接的表中删除重复项?
- scala - EMR Spark - libcrypto.so.1.0.0 的链接不满意
- javascript - 为什么 Express.js 重定向在 Node.js MongoDB 应用程序中抛出错误 [ERR_HTTP_HEADERS_SENT]?
- python - 我如何从网站上抓取隐藏的数据
- sql - 查找 EId 和 EName
- c++ - 1String 将自身附加到另一个 C++ 的末尾
- java - 如果我只能获取某个类的对象,如何避免instanceof,但我的方法只能在子类上工作
- javascript - 显示到小数点后两位 - React.Js
- docker - 命令 'cmd /S /C choco install --no-progress -y curl' 返回一个非零代码:3221225785