【发布时间】:2011-09-21 10:02:21
【问题描述】:
基本上,我需要一个真正的 C++ 编译时字符串散列。我不关心技术细节,可以是模板,宏,任何东西。到目前为止我看到的所有其他散列技术只能在编译时生成散列表(如 256 个 CRC32 散列),而不是真正的散列。
换句话说,我需要这个
printf("%d", SOMEHASH("string"));
被编译为(在伪汇编器中)
push HASHVALUE
push "%d"
call printf
即使在调试版本中,也没有对字符串进行运行时操作。我正在使用 GCC 4.2 和 Visual Studio 2008,我需要这些编译器的解决方案(所以没有 C++0x)。
【问题讨论】:
-
听起来像rentacoder。由于没有 C++0x 是不可能的,我猜你必须为 GCC 和 MSVC 编写编译器插件。
-
我认为这在纯 C++ 中是不可能的。运行时对编译后的字符串进行散列的开销真的那么昂贵吗?
-
@Johannes:在 C++0x 中有可能吗?
-
@Billy ONeal:我认为它将使用用户定义的文字,不是吗?
-
@Billy:那个调用可以是 constexpr。
标签: c++ hash compile-time