#include <> и #include “” [дубликат]

Работы для меня. Я поразил Высокий звук + F2 , затем я ввожу местоположение доли UNC в форму: smb://server-name/sharename или smb://servername/c$ и хит Входят .

мне затем дарят поле входа в систему, где я ввожу имя пользователя окон, доменное имя и пароль Windows. Подсказка: Я изменяюсь /etc/samba/smb.conf "WORKGROUP" на доменное имя, таким образом, оно автоматически заполняет в поле входа в систему.

, Возможно, Вы могли проверить для обеспечения общий для самбы, установлен?

sudo apt-get update
sudo apt-get install samba-common

кроме того, возможно, Ваш домен использует некоторые броские настройки аутентификации в `/etc/samba/smb.conf.

12
задан Community 23 May 2017 в 10:29
поделиться

8 ответов

Стандарт языка C говорит, что <> должен использоваться для «заголовков», а «» должен использоваться для «исходных файлов» . Не беспокойтесь о том, что такое "исходные файлы". Когда в стандарте говорится «исходные файлы», это не значит, что вы думаете. Термин «исходные файлы», используемый в стандарте, охватывает то, что мы в просторечии называем «файлами заголовков» (в дополнение к тому, что мы обычно называем «исходными файлами»).

Когда в стандарте говорится о «заголовках», это не так. конкретно речь идет о файлах вообще. Стандарт не требует, чтобы заголовки существовали в виде файлов. Они могут быть встроены в компилятор для выполнения всех стандартных задач.

Таким образом, реальная разница между <> и "" заключается в том, что <> используется для заголовков и "" используется для файлов . Если вы знаете, что источник, который вы будете включать, является файлом , тогда вам следует использовать "" .

На практике компиляторы используют разные алгоритмы поиска для <> против "" . Это разрешено стандартом, поскольку алгоритм поиска, который будет использоваться для любого из них, определяется реализацией . Но это не настоящая разница, выраженная в стандарте.

используется для заголовков и «» используется для файлов . Если вы знаете, что источником, который вы будете включать, является файл , тогда вам следует использовать "" .

На практике компиляторы используют разные алгоритмы поиска для <> против "" . Это разрешено стандартом, поскольку алгоритм поиска, который будет использоваться для любого из них, определяется реализацией . Но это не настоящая разница, выраженная в стандарте.

используется для заголовков и «» используется для файлов . Если вы знаете, что источником, который вы будете включать, является файл , тогда вам следует использовать "" .

На практике компиляторы используют разные алгоритмы поиска для <> против "" . Это разрешено стандартом, поскольку алгоритм поиска, который будет использоваться для любого из них, определяется реализацией . Но это не настоящая разница, выраженная в стандарте.

компиляторы используют разные алгоритмы поиска для <> по сравнению с "" . Это разрешено стандартом, так как алгоритм поиска, который будет использоваться для любого из них, определен реализацией . Но это не настоящая разница, выраженная в стандарте.

компиляторы используют разные алгоритмы поиска для <> по сравнению с "" . Это разрешено стандартом, поскольку алгоритм поиска, который будет использоваться для любого из них, определяется реализацией . Но это не настоящая разница, выраженная в стандарте.

22
ответ дан 2 December 2019 в 02:57
поделиться

Основное различие состоит в в том, какие пути ищутся.

Вы должны использовать форму угловых скобок для "системы" включает и обычные кавычки для проекта -local включает.

23
ответ дан 2 December 2019 в 02:57
поделиться

Дэн Молдинг понял все правильно; раскрутите, хакер, и Ник Бастин ошибся. Извините.

#include <...>

предназначен для заголовков , которые даже не обязательно должны быть файлами в файловой системе, но могут, например, быть внутренними для компилятора.

#include "..."

предназначен для файлов , и только если такой файл не найден, по умолчанию он возвращается к #include <...> .

Как и где ищутся эти заголовки и файлы, и следует ли использовать <> для системных файлов и "" для файлов проекта, что действительно является общепринятым соглашением, полностью зависит от компилятора и проекта.

Стандарт C (ISO / IEC 9899: 1999) говорит (выделено мной):

6.10.2 Включение исходного файла

Ограничения

Директива #include должен идентифицировать заголовок или исходный файл которые могут быть обработаны реализация.

Семантика

Директива предварительной обработки вида

#include новая строка

ищет последовательность места, определяемые реализацией для a заголовок однозначно идентифицируется указанная последовательность между <и> разделители, и вызывает замену этой директивы всей содержимое заголовка. Как места указаны или указан заголовок определяется реализацией.

Директива предварительной обработки формы

#include "q-char-sequence" new-line

вызывает замену этой директива всем содержимым исходный файл, идентифицированный указанная последовательность между " разделители. Именованный исходный файл поиск осуществляется> способом, определяемым реализацией. Если это поиск не поддерживается, или если поиск не выполняется, директива обрабатывается так, как если бы он читал

#include новую строку

с идентичным содержащаяся последовательность (включая> символы, если есть) из оригинала директива.

7
ответ дан 2 December 2019 в 02:57
поделиться

Для компилятора gcc существует разница между заголовками <> и "". Если заголовок <> включен из каталога, предоставленного препроцессору как -isystem, то предупреждения для включенного заголовка не выдаются. С -Werror это имеет огромное значение в некоторых случаях.

В компиляторе Intel также есть директива -isystem, поэтому она может быть применима и к icc.

Не говоря уже о различии в каталогах поиска. это слишком очевидно, чтобы замечать.

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

Цитаты предписывают поиск сначала в текущем каталоге, затем в системных каталогах (либо путь, жестко заданный в компиляторе / препроцессоре, либо указанный с помощью -I ). Используя угловые скобки , вы сначала отказываетесь от поиска в текущем каталоге.

Вывод компилятора определенно не зависит от кавычек, потому что он обрабатывается на этапе предварительной обработки. За исключением случая, когда из-за измененного поведения поиска включаются разные файлы.

6
ответ дан 2 December 2019 в 02:57
поделиться

#include

проверит пути включения системы (включая любые дополнительные пути, добавленные для проекта).

#include "somefile.h"

проверит рабочую папку приложения. (т.е. та же папка, что и исходный файл, в котором есть инструкция #include).

проверит, включены ли в систему пути (включая любые дополнительные пути, добавленные для проекта).

#include "somefile.h"

проверит рабочую папку приложения. (т.е. та же папка, что и исходный файл, в котором есть инструкция #include).

проверит, включены ли в систему пути (включая любые дополнительные пути, добавленные для проекта).

#include "somefile.h"

проверит рабочую папку приложения. (т.е. та же папка, что и исходный файл, в котором есть инструкция #include).

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

Предупреждение: это чистое предположение. У меня недостаточно опыта работы с компилятором Intel, чтобы знать, работает ли он таким образом, и я не знаю ни одного компилятора, который бы это делал.

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

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

В целом нет технической разницы, и все, что вам говорят об этом, - это просто местный стиль, вероятно, под влиянием прошлых компиляторов - многие современные компиляторы реализуют начальный поиск точно так же (часто другие общие варианты поведения доступны через опцию командной строки). Стандарт оставляет поведение в руках разработчика без особого обоснования поддержки обоих синтаксисов.

В соответствии с разделом 6.10.2 стандарта ISO C99, пути поиска для <> и "" оба определяется реализацией . ЕДИНСТВЕННОЕ различие между ними в глазах стандарта заключается в том, что использование "" вернется к <>, если не может быть разрешено. (Пусть вас не сбивает с толку стандарт, делающий различие между "заголовком" и "исходным файлом"

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

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