- https://github.com/nihui/ruapu是nihui大佬开发的用单文件检测CPU特性的项目
ruapu.h的使用
- "ruapu.h"主要提供了两个函数 ruapu_init 和 ruapu_supports,分别用于初始化和检测指令集支持。
// 使用示例见:https://github1s.com/nihui/ruapu/blob/master/main.c#L14-L16
void ruapu_init();
int ruapu_supports(const char* isa);
使用方式
#define RUAPU_IMPLEMENTATION
#include "ruapu.h"
- 需要加上
#define RUAPU_IMPLEMENTATION
是因为"ruapu.h"的结构如下(一般来说头文件只包含声明,所以要这样处理)
#ifndef RUAPU_H
#define RUAPU_H
void ruapu_init();
int ruapu_supports(const char* isa);
#ifdef RUAPU_IMPLEMENTATION
// 两个函数的实现
#endif // RUAPU_IMPLEMENTATION
实现部分
#include <setjmp.h>
#include <string.h>
Windows 平台的ruapu_detect_isa()实现
#if defined _WIN32
#include <windows.h>
#if WINAPI_FAMILY == WINAPI_FAMILY_APP
// uwp does not support veh :( UWP平台不支持VEH(Vectored Exception Handling)
#if defined (_MSC_VER)
#pragma message("warning: ruapu does not support UWP yet.")
#else
#warning ruapu does not support UWP yet.
#endif
static int ruapu_detect_isa(const void* some_inst)// 该函数总是返回0
{
(void)some_inst;
return 0;
}
#else // WINAPI_FAMILY == WINAPI_FAMILY_APP
// 如果不是UWP平台,这里放置非UWP平台的ruapu_detect_isa()实现
#endif // WINAPI_FAMILY == WINAPI_FAMILY_APP