C++的宏利用include和undef来重复使用

如dll导出函数, 需要定义以及QueryInterface, 其中函数有多个, 如果想代码尽量简洁, 只有这个方法

  1. 定义
#define NVIDIA_API_DEF(_fun)	decltype(_fun)		* _##_fun = NULL;
#define NVIDIA_API_USE(_fun)	NVIDIA_API_DEF(_fun)
#include "../Library/nvapi/nvapi_list.h"
  1. 获取函数
#undef NVIDIA_API_USE
#define NVIDIA_API_GET(_fun)	bRetVal &= NVIDIA_GetApi(_##_fun,	#_fun);
#define NVIDIA_API_USE(_fun)	NVIDIA_API_GET(_fun)
#include "../Library/nvapi/nvapi_list.h"
  1. 列表文件宏
NVIDIA_API_USE(NvAPI_EnumPhysicalGPUs);
NVIDIA_API_USE(NvAPI_GPU_GetFullName);
NVIDIA_API_USE(NvAPI_GPU_GetThermalSettings);
NVIDIA_API_USE(NvAPI_GPU_PowerPolicyGetInfo);
NVIDIA_API_USE(NvAPI_GPU_PowerDeviceGetStatus);
...
posted @ 2023-01-22 09:44  Yofoo  阅读(41)  评论(0编辑  收藏  举报