【发布时间】:2018-05-23 13:06:29
【问题描述】:
假设我有一个类似的函数
void foo(const char* bar, ...)
它已经在多个地方被调用了。
是否可以在main() 中收集编译时已知的所有静态字符串的地址?
比如foo("abc"),我想在main()中能得到"abc"的地址。如果有人打电话给foo(someVariable),someVariable的地址可能不知道,所以可以忽略。
有可能吗?
【问题讨论】:
-
请注意,
"abc"可以与(另一个)"abc"有不同的地址。 -
我可以接受不同的地址,即使内容完全相同。感谢您指出:)
-
您可以创建
operator ""_some_suffix手动注册静态c-string。 -
C++ 中没有收集所有字符串的工具;这是一个实施问题。您的编译器可能有一些 API 用于此或命令行开关或
pragma。 -
许多项目使用字符串数据库。这在必须以不同语言呈现文本时非常有用。