BYTE typedef в VC ++ и windows.h - PullRequest
       1

BYTE typedef в VC ++ и windows.h

0 голосов
/ 19 мая 2010

Я использую Visual C ++ и пытаюсь включить файл, который использует BYTE (а также DOUBLE, LPCONTEXT ...), который по умолчанию не является определенным типом.

Если я включаю windows.h, он работает нормально, но windows.h также определяет GetClassName, который мне не нужен. Я ищу альтернативу включению windows.h, которая бы работала с VC ++ и определяла бы большинство типов, таких как BYTE, DOUBLE ...

Спасибо

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Я думаю, windows.h самое большее объявляет <a href="http://msdn.microsoft.com/en-us/library/ms633582%28VS.85%29.aspx" rel="nofollow noreferrer">GetClassName()</a>, но не определяет его. Подобное объявление функции (и будет много, намного больше, введенных windows.h) ничего не стоит.

Если вы обеспокоены тем, что оно вступает в противоречие с именем функции, которую вы хотите использовать, рассмотрите возможность помещения своего собственного в пространство имен.

2 голосов
/ 19 мая 2010

Вам нужно включить windows.h, чтобы получить эти типы. Если вы хотите уменьшить количество определений, которые вводит windows.h, вы можете #define WIN32_LEAN_AND_MEAN перед включением windows.h, что исключит много вещей (но не все). Смотри http://support.microsoft.com/kb/166474.

2 голосов
/ 19 мая 2010

BYTE и LPCONTEXT являются используемыми типами и определены Windows API. Если вы разрабатываете приложение для Windows, включите windows.h, чтобы вы могли использовать методы Windows API и необходимые типы.

Любой символ, определенный в windows.h, который вам не нужен, никак не влияет на ваше приложение, он просто игнорируется во время компиляции.

PS: Конечно, вы можете скопировать точные определения этих структур из заголовков Windows в ваши собственные файлы заголовков, но вы ничего не получите. Наоборот. Заголовочные файлы определяют типы, общие для всех вызовов API Windows. Если эти типы когда-либо изменятся, ваше приложение может ужасно аварийно завершить работу, поскольку типы, определенные в ваших личных заголовочных файлах, и типы, используемые Windows, больше не совпадают. Вот почему каждый, кто нуждается в этих типах, просто включает windows.h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...