在Mac OS X和Xcode上使用mmap时出现错误:
使用未声明的标识符'MAP_POPULATE'
相同的代码正在另一台机器上运行。我该如何解决这个问题?
答案 0 :(得分:1)
MAP_POPULATE
仅适用于Linux,仅适用于版本2.5.46(自版本2.6.23以来用于私有映射)。 MAP_POPULATE
用于减少页面错误的惩罚,因此您的代码应该能够无需运行。以下是如何使用预处理器在不同计算机上运行相同代码的示例。
#if __linux__
#include <linux/version.h>
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)
#define _MAP_POPULATE_AVAILABLE
#endif
#endif
#ifdef _MAP_POPULATE_AVAILABLE
#define MMAP_FLAGS (MAP_PRIVATE | MAP_POPULATE)
#else
#define MMAP_FLAGS MAP_PRIVATE
#endif