Fra*_*ger 1 c c++ svn macros c-preprocessor
我正在寻找一个C/C++宏,它可以将随机SVN版本如"$ Revision:9 $"或"$ Revision:9999999 $"转换为整数或字符串.
我知道存在简单的函数来实现这一点,但我想在编译时创建它.
我希望写下这样的话:unsigned int rev = SVN_TO_INT("$Revision$");
我同意你不能在编译时通过宏或模板使用字符串.所以....不要使用字符串.
这是一个丑陋的黑客,但我认为它符合您的所有要求.我不推荐它.
#define $Revision struct REV_STR { unsigned foo
#define $ * 64; };
$Revision: 4521 $
enum { REV = sizeof(REV_STR) / 8 };
#undef $Revision
#undef $
#include <iostream>
int main()
{
std::cout << REV << std::endl;
return 0;
}
// $ g++ -Wall -Wextra revision.cpp && ./a.exe
// revision.cpp:4: warning: width of `REV_STR::foo' exceeds its type
// 4521
Run Code Online (Sandbox Code Playgroud)