我创建了一个宏,
#define DEBUG_BREAK(a) if (a) __asm int 3;
Run Code Online (Sandbox Code Playgroud)
但问题是如果没有附加调试器,程序将运行不正确.
所以我需要知道是否附加了调试器.如果有调试器,应用程序应该调用int 3.否则,它不应该.
我怎么能这样做?
我有一个RNG功能xorshift128plus,需要一个Xorshift128PlusKey:
/**
* \brief Keys for scalar xorshift128. Must be non-zero.
* These are modified by xorshift128plus.
*/
struct Xorshift128PlusKey
{
uint64_t s1;
uint64_t s2;
};
/**
* \brief Return a new 64-bit random number.
*/
uint64_t xorshift128plus(Xorshift128PlusKey* key);
Run Code Online (Sandbox Code Playgroud)
我想使用rdtsc(处理器时间戳)为我的RNG 播种.问题是__rdtscmsvc下的内在函数返回64位无符号整数,种子必须是32位无符号整数.什么是对RDTSC转换为种子的最佳方式,同时保留随机性.转换必须尽可能快.
我不能使用std lib或boost.(这是一个游戏引擎)