问题是在一个平台上(
windows,mvsc2015)uint64_t被定义为unsigned long long而另一个(ubuntu,clang)它是unsigned long,并且代码看起来像
sprintf(buffer,“%#llx”,u64key);
sprintf(buffer,“%#llx”,u64key);
解决方法
解决方案是使用C99的格式宏,特别是uint64_t的PRIu64:
#include <inttypes.h> … sprintf(buffer,"%#" PRIu64 "\n",u64key);