включите "file.h" против <file>в чем разница? - PullRequest
5 голосов
/ 17 ноября 2011

Я работаю в Visual studio 2010. Я добавил каталог в Свойства проекта -> Компоновщик -> Общие -> Дополнительные каталоги

Проект компилируется, если я использую

 "file.h"

но нет, если я использую

 <file>

Ответы [ 3 ]

11 голосов
/ 17 ноября 2011

Возможно, вы предполагаете, что < > неявно добавляет .h в конец имени файла.Это неправда.Используете ли вы < > или " ", не имеет значения для имени файла.Он в основном сообщает реализации, в каком порядке он должен проходить, включая каталоги, чтобы найти файл заголовка.

Чтобы процитировать стандарт:

Директива предварительной обработки вида
# include <h-char-sequence> new-line
ищет последовательность мест, определенных реализацией, для заголовка, уникально идентифицируемого указанной последовательностью между разделителями < и >, и вызывает замену этой директивы всем содержимым заголовка.То, как определяются места или определяется заголовок, определяется реализацией.

Директива предварительной обработки вида
# include "q-char-sequence" new-line
вызывает замену этой директивы на все содержимое исходного файла, идентифицируемого указанной последовательностью между разделителями ".Именованный исходный файл ищется в зависимости от реализации.Если этот поиск не поддерживается или если поиск не удался, директива обрабатывается повторно, как если бы она читала

# include <h-char-sequence> new-line
с идентичной содержащейся последовательностью (включая > символов, если таковые имеются) изоригинальная директива

5 голосов
/ 17 ноября 2011

"" для локальных файлов, а <> из файлов в библиотеке C.

1 голос
/ 17 ноября 2011

Включение работает, только если существует такой файл.В вашем случае это может быть причиной того, что существует файл file.h , но обратите внимание просто file .

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

...