что включает в себя #includeимею в виду? - PullRequest
1 голос
/ 22 ноября 2010

Я пытаюсь скомпилировать элемент управления Scintilla с MSVC ++ 2010 Express Edition, и довольно больно заставить его работать правильно, потому что мне нужна куча файлов.При компиляции SString.h я заметил следующее:

#include <crtdll/stddef.h>

Я не программист на C ++, но я понимаю, что означает

#include <xxx.h> 

, но что означает включаемый элемент?Я получаю следующую ошибку:

Ошибка 1, ошибка C1083: Не удается открыть файл включения: 'crtdll / stddef.h': Нет такого файла или каталога f \ scintilla \ lexers \ sstring.h 44

Любая помощь в том, как я могу это исправить, будет признательна.

Ответы [ 4 ]

1 голос
/ 23 марта 2011

Используя предыдущую функцию, вы вызываете и затем вставляете файл заголовка в ваш текущий исходный код.

В случае #include <crtdll/stddef.h> вы будете вставлять файл заголовка stddef.h изКаталог crtdll (который должен быть дочерней папкой, определенной в вашем компиляторе как ручка для файлов заголовков) во время компиляции и компоновки вашей программы.

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

Удачи вам в вашей программе!

1 голос
/ 22 ноября 2010

Если я не ошибаюсь, это просто относительный путь.Другими словами, Visual Studio будет искать stddef.h в подкаталоге crtdll, вероятно, корневого каталога проекта.

0 голосов
/ 22 ноября 2010

Я не программист на C ++, но я понимаю, что

ты уверен? include with <> ищет пути включения для указанного файла и копирует содержимое содержимого этого файла в ваш .cpp. Таким образом, вы просто пропускаете файл crtdll / stddef.h, однако stddef.h фактически принадлежит стандартной библиотеке C, поэтому вы можете заменить ее на #include в C или #include в C ++ Самый простой способ - проверить ваши каталоги включений. crtdll - это стандартная библиотека C, предоставляемая msvc, поэтому, возможно, вам придется добавить родительскую папку вашей стандартной библиотеки, включающую каталог

0 голосов
/ 22 ноября 2010

Это означает, что файл stddef.h необходимо включить из папки crtdll.

Вам нужно проверить включаемые каталоги для проектов Visual C ++, чтобы увидеть, какие каталоги по умолчанию используются для поиска заголовочных файлов в Visual Studio.

Чтобы исправить эту ошибку, посмотрите, по какому пути вы установили элемент управления Scintilla. Папка crtdll будет там, скорее всего. А затем добавьте эту папку в вашу визуальную студию и включите в нее каталоги.

Вы можете установить его в следующем диалоговом окне свойств проекта:

Здесь http://i56.tinypic.com/2zo9guh.jpg

...