Что с “#ifdef _MAC” в заголовочных файлах Windows?

set Path = %PATH%;C:\Python34\;C:\Python27\Scripts Источник

15
задан Joey 3 March 2010 в 16:34
поделиться

4 ответа

В свое время компания Microsoft была крупнейшим в мире разработчиком программного обеспечения для Macintosh. Excel и Word доминировали на своих рынках на Macintosh, а позже и Office. Поэтому нет ничего удивительного в том, что отдел приложений MS хотел бы иметь подмножество заголовочных файлов Windows, которые работали бы на MAC - чтобы облегчить поддержку их кроссплатформенного программного обеспечения.

Но никогда не существовало версии Windows OS, которая работала бы на Macintosh.

В любом случае, этот фрагмент из objidl.h, похоже, указывает на то, что _MAC действительно означает Macintosh в заголовочных файлах, хотя...

//FSSpec is Macintosh only, defined in macos\files.h
#ifdef _MAC
    typedef struct tagSTATSTG
    {                      
        LPOLESTR pwcsName;
            FSSpec *pspec;
        DWORD type;
        ULARGE_INTEGER cbSize;
...
    } STATSTG;
#else //_MAC
14
ответ дан 1 December 2019 в 02:37
поделиться

Как Вы видите в заголовочном файле Windows.h, макрос _MAC определяется следующим образом:

#if defined(_68K_) || defined(_MPPC_)
#define _MAC
#endif
#endif

Так, да, это определяется только для старой macOS среды (прежде чем это начало использовать процессоры Intel)

0
ответ дан 1 December 2019 в 02:37
поделиться

Я предполагаю, что он использовался / использовался для компиляции программного обеспечения Microsoft (Office, IE, Windows Media Player) для MacOS. Я знаю, что IE и WMP для Solaris включают подмножество самой Windows (например, libwinnt.so, libkernel32.so) в качестве прямой замены соответствующих DLL Windows.

3
ответ дан 1 December 2019 в 02:37
поделиться

Многие коды MS содержат ссылки на MAC, поскольку они также разрабатываются для Mac - например, office. Вероятно, эта часть заголовочного файла пришла от этих команд.

1
ответ дан 1 December 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: