【发布时间】:2019-11-14 21:41:46
【问题描述】:
给定代码
// somewhere in the program
const char* p1 = "Hello World";
// somewhere else in the program
const char* p2 = "Hello World";
有没有办法确保p1 == p2 在整个程序/库中始终得到满足?我的意思是p1 和p2 总是指同一个字符串字面量。
背后的原因
我想要实现的是使用const char* 作为std::map<const char*, something> 的键。我有一个宏
#define nameof(id) #id
模仿 C# 中 nameof 关键字的行为(我知道这已经存在缺陷),我想用它来访问类似结构的注册表,例如
void foo()
{
auto x = getMapping(nameof(foo));
}
// different place in code
void registerFoo(something x)
{
setMapping("foo", x);
}
【问题讨论】:
-
assert(p1 == p2);? -
不是便携式的。
-
@ShadowRanger 我不想测试它是否满意。我想保证它总是令人满意的。