Я пытаюсь обновить какой-то код приблизительно из *2003* I / O и работаю с чем-то странным: есть несколько мест, где методы объявляются как чисто виртуальные, только если __LP64__
макрос препроцессора установлен. Пример из IOBlockStorageDevice :
public
#ifdef __LP64__
virtual IOReturn getWriteCacheState(bool *enabled) = 0;
#else /* !__LP64__ */
virtual IOReturn getWriteCacheState(bool *enabled); /* 10.3.0 */
#endif /* !__LP64__ */
В вышеприведенном примере, зачем форсировать реализацию getWriteCacheStatus в> = 10.4, а не в 10.3? Это просто случай «мы должны были сделать это раньше» или есть что-то более глубокое, чего я не вижу (как это обычно бывает).