void printErrorMsg(char *format, ...) { va_list args; va_start(args, format); printf("ERROR: "); vprintf(format, args); va_end(args); } PFN_vkDestroyInstance pfn_vkDestroyInstance = NULL; #define GET_INSTANCE_LEVEL_FUN_ADDR(name) \ pfn_##name=(PFN_##name)pfn_vkGetInstanceProcAddr(g_Instance,#name); \ if(pfn_##name == NULL) \ { \ printErrorMsg("cannot get" #name "address\n"); \ return false; \ } /* without macro pfn_vkDestroyInstance = (PFN_vkDestroyInstance)pfn_vkGetInstanceProcAddr(g_Instance,"vkDestroyInstance"); if(pfn_vkDestroyInstance==NULL) { printErrorMsg("cannot get vkDestroyInstance address\n"); return false; } */ GET_INSTANCE_LEVEL_FUN_ADDR(vkDestroyInstance);