#İnclude <filename> və #include "filename" arasında fərq nədir?

C və C ++ proqramlaşdırma dillərində, bucaqlı mötərizələrdən istifadə etməklə və quotes istifadə edərək, include kimi ifadələr arasında fərq nədir?

  • #include <filename>
  • #include "filename"
1937
22 авг. set axtarmaq49 22 aug. 2008-08-22 04:40 '08 at 4:40 2008-08-22 04:40
@ 32 cavab
  • 1
  • 2

Praktikada fərqi, ön-prosessorun daxil olunan fayl üçün axtarış etdiyi yerdir.

#include <filename> preprocessor, tətbiqə əsaslanan axtarışı, adətən, daha əvvəl tərtibatçı / IDE tərəfindən təyin edilən axtarış dizinlerinde yerinə yetirir. Bu metod adətən standart kitabxana başlığı fayllarını daxil etmək üçün istifadə olunur.

#include "filename" preprocessor əvvəlcə direktivi olan fayl ilə eyni kataloqda görünür və sonra #include <filename> forması üçün istifadə olunan axtarış yolunu izləyir. Bu üsul adətən proqramçı tərəfindən müəyyən edilmiş başlıq fayllarını daxil etmək üçün istifadə olunur.

Axtarış yolunda GCC sənədlərində daha tam təsvir mövcuddur.

1127
22 авг. Cavab verilir quest49 22 aug. 2008-08-22 04:40 '08 at 4:40 2008-08-22 04:40

Tapmaq üçün yeganə yoldur tətbiq sənədlərini oxumaqdır.

Standart C , maddə 6.10.2, 2-4 maddələr:

border=0
  • Əvvəlcədən emal istiqamətləndiricisi

     #include <h-char-sequence> new-line 

    sınırlandırıcılar arasında müəyyən bir sıra ilə müəyyənləşdirilən bir başlıq üçün müəyyən edilmiş yerlərin bir ardıcıllığını axtarır və bu direktivin başlığın bütün məzmunu ilə əvəzlənməsinə səbəb olur. Yerlərin müəyyənləşdirildiyi və başlığı necə təyin edildiyi tətbiq edilir.

  • Əvvəlcədən emal istiqamətləndiricisi

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

    bu direktivin məhdudlaşdırıcılar arasında göstərilən ardıcıllıqla müəyyən edilmiş mənbə faylının bütün məzmunu ilə əvəz edilməsinə səbəb olur. Adı verilən qaynaq faylı tətbiq tərəfindən müəyyən edilmiş bir üsulla aranır. Bu axtarış dəstəklənmirsə və ya axtarış başarısız olursa, direktiv oxunan kimi işlənir.

     #include <h-char-sequence> new-line 

    mənbəyi direktivdən eyni olan ardıcıllıqla (əgər varsa > simvollar daxil olmaqla).

  • Əvvəlcədən emal istiqamətləndiricisi

     #include pp-tokens new-line 

    (bu iki əvvəlki formadan birinə uyğun gəlmir) icazə verilir. Direktivə include edildikdən sonra əvvəlcədən işləmə cədvəli düz mətldə olduğu kimi işlənir. (Hazırda makro ad olaraq təyin edilmiş hər bir identifikator əvvəlcədən işləmə siyahılarının əvəz siyahıları siyahısına salınıb). Bütün əvəzlərdən ibarət olan direktiv əvvəlki iki formadan birinə uyğun olmalıdır. Bir cüt və ya bir cüt simvolun bir və ya bir neçə əvvəlcədən işlənmə markerləri arasında əvvəlcədən işləmə markalarının ardıcıllığı əvvəlcədən işləmə markerlərinin başlığının birləşməsinə daxil edilən üsul tətbiqi ilə bağlıdır.

Anlayışlar:

  • h-char: yeni xarakterli xarakterdən başqa, orijinal xarakterli hər hansı element

  • q-char: yeni xarakterli xarakterli istisna olmaqla, orijinal xarakterli elementin hər hansı elementi və "

622
17 сент. Cavab piCookie 17 sep verilir . 2008-09-17 00:06 '08 at 0:06 'da 2008-09-17 00:06

<Və> arasındakı simvollar ardıcıllığı mütləq bir fayl deyil başlığı istinad edir. Tətbiqlər uyğun gördüyünüz kimi simvollar simli istifadə etmək üçün əsasən pulsuzdir. (Əsasən, sadəcə, bir fayl adı kimi baxın və mesajın qalan hissəsi olduğundan daxil yolunu axtarın.)

Forma #include "file" edilirsə, tətbiq ilk olaraq dəstəklənsə, müəyyən adı olan bir faylı axtarır. Əgər (dəstəklənmirsə) və ya axtarış yerinə yetirilmirsə, tətbiq başqa bir formanı istifadə kimi hərəkət edir ( #include <file> ).

Bundan əlavə, üçüncü bir forma var və #include direktivi yuxarıdakı forma ilə uyğun gəlmirsə istifadə olunur. Bu formada, #include direktivinin operandlarında bəzi əsas ön işləmə (məsələn, makro genişləmə) həyata keçirilir və nəticənin digər iki formadan birinə uyğun olması gözlənilir.

242
08 сент. Cavab verildi 08 Sep. 2008-09-08 20:43 '08 at 20:43 pm 2008-09-08 20:43

Burada bəzi yaxşı cavablar C standartına istinadlar ehtiva edir, lakin POSIX standartı, xüsusilə c99 komutunun xüsusi davranışı (məsələn, C kompilyatoru) unudulur .

7 saylı Açıq Qrupun Orijinal Şartnaməsinə əsasən ,

Adı adları mütləq olmayan yollar üçün axtarış alqoritmini dəyişdirin, adi yerlərə baxmadan əvvəl dizin yolu ilə göstərilən kataloqa baxmaq üçün. Beləliklə, adları cüt dırnaq işarələrinə (") qoşulan başlıqlar əvvəlcə" #include " , sonra isə" -I " və son normal yerlərdə olan faylların kataloqunda axtarılır. ("<>"), başlığı yalnız -I parametrləri ilə adlandırılan və daha sonra normal yerlərdə axtarılmalıdır. -I parametrləri ilə adlandırılmış göstəricilər, göstərilən qaydada olmalıdır, tətbiqlər bu seçimin ən azı 10 nüsxəsini dəstəkləməlidir c99 əmrinə bir zəngdə.

Belə ki, POSIX-uyğun mühitdə, C-uyğun COS kompilyatoru ilə #include "file.h" ehtimal ./file.h üçün ilk növbədə ./file.h . - #include <file.h> isə, #include <file.h> əvvəlcə /usr/include sisteminizə /usr/include edəcəyi halda, #include təlimatına malik faylın yerləşdiyi kataloq başlıqlar üçün yerlər (POSIX tərəfindən müəyyən edilmir).

98
20 июля '12 в 12:29 2012-07-20 12:29 Cavab Yann Droneaud tərəfindən verilir 20 iyul '12 12:29 2012-07-20 12:29

O edir:

 "mypath/myfile" is short for ./mypath/myfile 

c . ya da #include və / və ya derleyicinin cari iş default_include_paths və / və ya default_include_paths olan faylın kataloqudur

 <mypath/myfile> is short for <defaultincludepaths>/mypath/myfile 

Əgər ./ <default_include_paths> içərisindədirsə, onda əhəmiyyəti yoxdur.

mypath/myfile başqa bir kataloq içərisindədirsə, davranış müəyyənləşdirilmir.

39
08 февр. Cavab Stefan Steiger tərəfindən verilir 08 fevral. 2011-02-08 14:45 '11 saat 14:45 'da 2011-02-08 14:45

GCC sənədləri onların arasındakı fərqləri bildirir :

Həm istifadəçi, həm də sistem başlıq faylları '#include preprocessing direktivindən istifadə olunur. İki variant var:

#include <file>

Bu seçim sistemi başlıq faylları üçün istifadə olunur. Sistem siyahılarının standart siyahısında fayl adı verilən bir fayl üçün axtarış edir. Bu siyahıya, -I variantları- -I ilə baxa bilərsiniz ( Invocation-a baxın).

#include "file"

Bu seçim öz proqramınızın başlıq faylları üçün istifadə olunur. Faylın adını daşıyan bir faylın cari faylını, sonra da kotirovkaların kataloqlarını, ardından da <file> üçün eyni dizindəki faylını arar. Əlavə- -Iquote ilə -Iquote kataloqu siyahısına əlavə edə bilərsiniz. Quotes və ya bucaqlı mötərizələrlə məhdudlaşan '#include arqumenti, şərhlərdə sabit bir simli kimi davranır və makro adları uzanmaz. Beləliklə, #include <x/*y> x/*y adlı bir sistem başlıq faylının daxil olduğunu göstərir.

Lakin, bir sətirdə bir sətir baş verirsə, onlar simvollardan qaçmaq deyil, düz mətn simvolu hesab edilir. C'de string sabitlərinə uyğun olan simvolların heç bir idarəedici ardıcıllığı #include "x\n\\y" , beləliklə, #include "x\n\\y" daxil edin, üç boşluq olan faylın adını bildirir. (Bəzi sistemlər \ "yol ayrıcıları \" kimi şərh edirlər, eyni zamanda '/ eyni şəkildə şərh edirlər.

Fayl adından sonra satırdakı bir şey (şərhlərdən başqa) varsa bu bir səhvdir.

38
14 янв. Cavab 14 yanvar tarixində Suraj Jain tərəfindən verilir . 2017-01-14 07:52 '17 də 7:52 2017-01-14 07:52

<file> daxilində, əvvəlcədən təyin edilmiş kataloqlarda və sonra directory .c faylında axtarış üçün öncülüğünü yönlendirir. "file" daxilində əvvəlcədən hazırlayıcıya mənbə fayl dizinini axtarmağı bildirir, sonra isə -I qaytarır və əvvəlcədən təyin olunur. Hər halda, bütün alıcılar axtarış edilir, yalnız axtarış düzeni fərqlidir.

2011-ci ildə standart əsasən "16.2 Giriş Mənbəyi Faylında" daxil edilmiş faylları müzakirə edir.

2 Formanın hazırlanması proseduru

# include <h-char-sequence> new-line

başlıq üçün tətbiq üçün müəyyən edilmiş bir ardıcıllıq üçün axtarış aparır, <və> məhdudlaşdırıcılar arasında göstərilən ardıcıllığı müəyyənləşdirir və bu direktivin başlığının bütün məzmunu ilə əvəz edilməsi çağırır. Yerin göstərdiyi və ya icra başlığı ilə müəyyənləşdirildiyi kimi.

3 Forma Hazırlama Direktivi

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

bu direktivin "məhdudlaşdırıcılar" arasında göstərilən ardıcıllıqla müəyyən edilmiş mənbə faylının bütün məzmunu ilə əvəzlənməsinə səbəb olur. Naməlum mənbə faylının axtarışı həyata keçirilməsinə uyğun olaraq həyata keçirilir. Bu axtarış dəstəklənməsə və ya axtarış həyata keçirilmirsə, direktiv oxuduğu kimi işlənir

# include <h-char-sequence> new-line

mənbəyi direktivdən eyni olan ardıcıllıqla (əgər varsa> simvollar daxil olmaqla).

Qeyd edək ki, "xxx" forması fayl tapılmadıqda <xxx> formasını <xxx> . Qalanlar tətbiq olunmaqla müəyyən edilir.

27
03 сент. cavab Arkadiy 03 sep verilir . 2008-09-03 15:17 '08 at 3:17 pm 2008-09-03 15:17

Standarta görə - bəli, fərqlidirlər:

  • Forma Advance Direktivi

     #include <h-char-sequence> new-line 

    <> məhdudlaşdırıcılar arasında birbaşa göstərilən ardıcıllıqla müəyyən edilmiş başlıq üçün müəyyən edilmiş bir ardıcıllıq üçün axtarış aparır və bu direktivin başlığın bütün məzmunu ilə əvəzlənməsinə səbəb olur. Yerlə və ya müəyyən edilmiş başlıqla göstərildiyi kimi həyata keçirilməsi ilə müəyyən edilir.

  • Forma Advance Direktivi

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

    bu direktivin məhdudlaşdırıcılar arasında göstərilən ardıcıllıqla müəyyən edilmiş mənbə faylının bütün məzmunu ilə əvəzlənməsinə səbəb olur " . Bu qaynaq faylı axtarış metodunda icra edilir.Bu axtarış dəstəklənməsə və ya axtarış edilməmişsə, təlimat oxumaq kimi işlənir

     #include <h-char-sequence> new-line 

    orijinal direktivdən eyni olan ardıcıllıqla (hər hansı bir simvol daxil olmaqla).

  • Forma Advance Direktivi

     #include pp-tokens new-line 

    (bu, əvvəlki iki formadan birinə uyğun gəlmir). Direktivə include edildikdən sonra əvvəlcədən hazırlanan cərəyanlar düz mətndə olduğu kimi işlənir. (Hazırda bir makro adı kimi təyin olunan hər bir identifikator əvvəlcədən işləmə əmsalının əvəzlənmə siyahısı ilə əvəz olunur.) Bütün dəyişikliklər əvvəlki iki formadan birinə uyğun olmalıdır. Əvvəlcədən işləmə ayələrini < və ya simvollar cütü arasında birləşən işarələrin bir ardıcıllığı bir başlıqla birləşdirilmiş olan üsul, tətbiq edilərək əvvəlcədən hazırlama nişanı müəyyən edilir.

Tanım:

  • h-char: yeni bir xarakterli xarakter istisna olmaqla, orijinal xarakterli hər hansı bir üzv və >

  • q-char: yeni xarakterli xarakter istisna olmaqla, orijinal xarakterli hər hansı bir üzv və "

Qeyd edək ki, bu standart tətbiqi ilə müəyyən edilmiş davranış arasında heç bir əlaqə göstərmir. Birinci form bir şəkildə, digəri isə (mümkündür) fərqli şəkildə həyata keçirilir. Standart ayrıca bəzi faylları təqdim etməlidir (məsələn, <stdio.h> ).

Formal olaraq, kompilyatorunuz üçün təlimatı oxumaq lazımdır, ancaq adətən (ənənə ilə) formu #include "..." #include ilk tapıldığı faylın kataloqunu və sonra #include <...> formu axtar (yol daxil olmaqla, sistem başlıqları).

18
18 авг. Skking tərəfindən verilmiş cavabı 18 aug. 2015-08-18 09:21 '15 at 9:21 AM 2015-08-18 09:21

Xüsusilə böyük cavablar üçün təşəkkür edirik. Adam Stelmashchik və PiKuki ibyb.

Bir çox proqramçı kimi, xüsusi proqramlar üçün "myApp.hpp" formasını və sistem kitabxana faylları üçün <libHeader.hpp> formasını və /IINCLUDE ətraf mühit dəyişənində göstərilən faylları "myApp.hpp" üçün istifadə etmək üçün qeyri-rəsmi razılığını istifadə /I illərcə bu standartdır.

Buna baxmayaraq, standart C, axtarış sifarişinin icrası xüsusi olduğunu bildirir, bu da taşınabilirlik kompleksini yarada bilər. Xeyir, biz daxil olan faylların yerini avtomatik olaraq müəyyən edən cəmi istifadə edirik. Daxil olan fayllarınız üçün nisbi və ya mütləq yolları istifadə edə bilərsiniz. yəni.

 #include "../../MyProgDir/SourceDir1/someFile.hpp" 

MSVS-in keçmiş versiyaları ikiqat çökmə tələb edir (\\), lakin bu artıq tələb olunmur. Bu dəyişikliyin nə vaxt olduğunu bilmirəm. Sadəcə nix ilə uyğunluq üçün slashes istifadə edin (Windows bunu qəbul edəcək).

Bu mövzuda həqiqətən narahat "./myHeader.h" , mənbə kodu ilə eyni "./myHeader.h" daxil olan fayl üçün "./myHeader.h" istifadə edin (mənim cari, çox böyük layihə, konfiqurasiyanın idarə olunması barədə həqiqətən dağılmış olan bir neçə faylın bir neçə nüsxəsinə malikdir) .

Burada MSDN şərhiniz sizin rahatlığınız üçün buraya kopyalanır).

Alınan forma

Önceden hazırlayıcı aşağıdakı faylları daxil olan faylları axtarır:

  • #İnclude operatorunu ehtiva edən fayl ilə eyni kataloqda.
  • Açıq faylların kataloqlarında onlar açıldığı tərs qaydada daxil edilir. Axtarış, ana faylın daxilindəki faylda başlanır və başlanır
    Dosyalar da daxil olmaqla hər hansı bir nənə və baba dizinini davam etdirir.
  • Hər bir kompilyator seçimi yolu ilə göstərilən yolda /I .
  • INCLUDE ətraf mühit dəyişən tərəfindən təyin olunan yol boyunca.

Açıq braket forması

Önceden hazırlayıcı aşağıdakı faylları daxil olan faylları axtarır:

  • Hər bir kompilyator seçimi yolu ilə göstərilən yolda /I .
  • Komut satırında tərtib edildikdə ətraf mühit dəyişən INCLUDE tərəfindən müəyyən edilmiş yollar.
14
15 окт. cavab verən riderBill 15 oct . 2014-10-15 02:51 '14 da 2:51 2014-10-15 02:51

Ən azından GCC versiyası üçün <= 3.0, bucaq braketinin forması daxil edilmiş fayl və daxil olanlar arasında bir əlaqə yaratmır.

Beləliklə, asılılıq qaydaları yaratmaq istəyirsinizsə (məsələn, GCC -M nümunəsini istifadə edərək), bağımlılıq ağacına daxil edilməli olan fayllar üçün alınmış formu istifadə etməlisiniz.

(bax: http://gcc.gnu.org/onlinedocs/cpp/Invocation.html )

13
25 окт. Denis Ros tərəfindən verilmiş cavab oktyabr, 25. 2011-10-25 15:35 '11 'də 15:35' də 2011-10-25 15:35

#include "" kompilyator, adətən, ehtiva edən bir qovluq və daha sonra digər qovluqları axtarır. #include <> derleyici fayl ilə mövcud qovluğu axtarmaq deyil.

12
08 февр. Cavab Maxim Egorushkin tərəfindən verilir 08 fevral. 2011-02-08 14:45 '11 saat 14:45 'da 2011-02-08 14:45

#include <file.h> kompilyator, məsələn, MinGW üçün file.h , derleyici file.h C: \ MinGW \ include \ və ya kompilyatorunuzun hər yerdə quraşdırılacaq.

#include "file" üçün cari qovluğu (yəni, mənbə faylını ehtiva edən qovluğu) axtarmaq üçün bildirir.

GCC- -I istifadə etmək üçün istifadə edə bilərsiniz ki, qarşılaşdıqda bucaqlı mötərizələrlə əlaqə saxlayarsa, -I sonra da başlıqları axtarmaq lazımdır. GCC, bayraqdan sonra dizinə istinad edir, sanki bir kataloqdur.

Məsələn, myheader.h öz qovluğunuzda istifadə edə bilərsiniz, əgər #include <myheader.h> deyə GCC-i bayrağı ilə #include <myheader.h> -I. (cari qovluğa daxil olmaq üçün axtarılmalıdır).

-I bayraq olmadan, #include "myheader.h" daxil etmək və ya #include "myheader.h" daxil etmək üçün #include "myheader.h" istifadə etmək lazımdır.

12
12 марта '18 в 2:06 2018-03-12 02:06 Cavab 12 mart 18: 18-də Adrian Zhang tərəfindən verilir. 2018-03-12 02:06
  • #include <> əvvəlcədən təyin edilmiş üstbilgi faylları #include <> .

Başlıq faylı əvvəlcədən təyin edildiyində, yalnız başlıq faylının adını köşeli parantezlərdə yazırsınız və belə görünür (iostream əvvəlcədən təyin edilmiş bir başlıq fayl adı varsa):

 #include <iostream> 
  • Proqramçının təyin etdiyi başlıq faylları üçün #include " "

Əgər siz (proqramçı) öz başlıq faylınızı yazdınızsa, başlıq faylının adını quotes yazmalısınız. Beləliklə, myfile.h adlı bir başlıq faylını yazdığınızı güman myfile.h , bu, bu faylları daxil etmək üçün direktivi necə istifadə etməlisiniz?

 #include "myfile.h" 
11
17 дек. Cavab MobiDev 17 dekabr verilir. 2012-12-17 10:54 '12 at 10:54 2012-12-17 10:54

#İnclude <filename> istifadə etdiyiniz zaman, əvvəlcədən prosessor C \ C ++ başlıq faylları kataloqunda (stdio.h \ cstdio, simli, vektor, və s.) Bir fayl axtarır. Lakin #include "filename" istifadə edərkən: əvvəlcədən prosessor faylın cari qovluğunda axtarış edir və əgər olmasa, onu C \ C ++ başlıq faylları dizinində axtarır.

9
12 апр. Cavab Çayim Fridman tərəfindən 12 apreldə verilir 2018-04-12 09:36 '18, 9:36 ; 2018-04-12 09:36

Bucaqlı mötərizə ilə #include obyekt obyektin daxil edilməsi üçün "tətbiqə bağlı yerlərin siyahısı" (bu "sistem başlığı" demək çox çətin bir yol) üçün baxacaqdır.

# tirajla daxil edin, yalnız fayl üçün baxacaq (və "tətbiqə bağlı olaraq", bleh). Bu, normal İngilis dilində atdığınız faylın yolunu / adını istifadə etməyə çalışacaq və sistem yolunu əlavə etməyəcək və ya bununla başqa bir şəkildə müdaxilə etməyəcəkdir.

Ayrıca #include "" işləməyəcəksə, standart olaraq #include <> olaraq oxunur.

Gcc sənədlərində ISO standartı ilə müqayisədə standartdan daha çox gcc-ə uyğun olan bir təsviri var (kompilyatora aiddir).

9
08 февр. Damon 08 feb cavab verilir . 2011-02-08 15:02 '11 at 15:02 2011-02-08 15:02
 #include <abc.h> 

standart kitabxana fayllarını daxil etmək üçün istifadə olunur. Beləliklə, kompilyator standart kitabxana başlıqlarının yerlərini yoxlayacaqdır.

 #include "xyz.h" 

xüsusi üstbilgi fayllarının daxil edilməsi barədə derivəni məlumatlandırır. Buna görə, derleyici bu başlıq fayllarını cari -I və ya-xüsusi klasörler.

8
23 янв. Christy Wald tərəfindən 23 yanvarda cavab verildi 2017-01-23 16:36 '17 saat 16:36 'da 2017-01-23 16:36

Buradakı cavabların bir çoxu, derivin faylını tapmaq üçün axtarış edəcək yollara yönəldilmişdir. Çoğu derleyiciler bunu yaparken, ilgili derleyiciye standart başlıqların etkilerini önceden programlamaya və #include <list> , #include <list> keçid #include <list> bir keçid olaraq verin və bu, bir fayl olaraq olmamalıdır.

Bu tamamilə hipotetik deyil. Bu şəkildə işləyən ən azı bir kompilyator var. #include <xxx> standart başlıqları olan #include <xxx> istifadə etmək tövsiyə olunur.

8
25 февр. cavab sp2danny 25 Fevral verilir. 2014-02-25 13:49 '14 saat 13:49 2014-02-25 13:49
 #include "filename" // User defined header #include <filename> // Standard library header. 

Məsələn:

Burada fayl adı Seller.h :

 #ifndef SELLER_H // Header guard #define SELLER_H // Header guard #include <string> #include <iostream> #include <iomanip> class Seller { private: char name[31]; double sales_total; public: Seller(); Seller(char[], double); char*getName(); #endif 

В реализации класса (например, Seller.cpp и в других файлах, которые будут использовать файл Seller.h ), заголовок, определенный пользователем, теперь должен быть включен следующим образом:

 #include "Seller.h" 
8
ответ дан Barbara 28 сент. '11 в 23:37 2011-09-28 23:37

поиск "<filename>" в стандартных ячейках библиотеки C

тогда как "filename" также ищет в текущем каталоге.

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

6
ответ дан jigar karangiya 28 марта '18 в 14:35 2018-03-28 14:35

В С++ включите файл двумя способами:

Первый - #include, который сообщает препроцессору искать файл в предопределенной папке по умолчанию. Это местоположение часто является переменной среды INCLUDE, которая обозначает путь для включения файлов.

И второй тип: #include "filename", который сообщает препроцессору сначала искать файл в текущем каталоге, а затем искать его в предопределенных местах, которые пользователь настроил.

6
ответ дан virat 17 февр. '16 в 12:07 2016-02-17 12:07

#include <filename> используется при обращении к системному файлу. Это файл заголовка, который можно найти в местах по умолчанию, таких как /usr/include или /usr/local/include . Для ваших собственных файлов, которые необходимо включить в другую программу, вы должны использовать синтаксис #include "filename" .

5
ответ дан srsci 27 авг. '14 в 22:36 2014-08-27 22:36

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

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

4
ответ дан Eakan Gopalakrishnan 04 июня '13 в 18:19 2013-06-04 18:19
#include <filename>

используется, когда вы хотите использовать файл заголовка системы C/С++ или библиотек компилятора. Этими библиотеками могут быть stdio.h, string.h, math.h и т.д.

#include "path-to-file/filename"

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

Дополнительные сведения о препроцессорах и заголовке. Прочтите C - Препроцессоры .

3
ответ дан Hafiz Shehbaz Ali 02 апр. '15 в 19:50 2015-04-02 19:50

Форма 1 - #include "xxx"

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

Форма 2 - #include <xxx>

Это ищет наличие файла заголовка в текущем каталоге, из которого вызывается директива.


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

Вы можете добавить дополнительные каталоги в путь поиска, используя Idir, который вызывает поиск dir после текущего каталога (для формы цитаты директивы) и перед стандартными системными каталогами.


В принципе, форма "xxx" - это не что иное, как поиск в текущем каталоге; если не найдено отбрасывание формы

2
ответ дан Darshan L 17 авг. '18 в 12:59 2018-08-17 12:59

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

cpp -v/dev/null -o/dev/null

Apple LLVM версии 10.0.0 (c> Цель: x86_64-apple-darwin18.0.0
Модель темы: posix InstalledDir: Библиотека/Разработчик /CommandLineTools/usr/bin
"/Library/Developer/CommandLineTools/usr/bin/c> c> #include "..." поиск начинается здесь:
#include <...> поиск начинается здесь:
/USR/локальные/включить
/Library/Developer/CommandLineTools/usr/lib/c>
/Library/Developer/CommandLineTools/USR/включать
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks (каталог фреймворка)
Конец списка поиска.

1
ответ дан Hogstrom 03 окт. '18 в 21:51 2018-10-03 21:51

Ответ на simpel будет, когда вы используете #include "filename" в c, он ищет файл в текущем каталоге и в каталоге, где хранятся все остальные библиотеки, но в случае #include ищет файл только в директории где хранятся все библиотеки.

В основном мы используем #include "filename", когда хотим использовать некоторый файл, который был написан ранее, который мы хотим для текущего файла.

0
ответ дан Sandipan 04 дек. '18 в 19:45 2018-12-04 19:45
  #include <filename> (1) #include "filename" (2) 

#include включает исходный файл, идентифицированный по имени файла, в текущий исходный файл на строке сразу после директивы.

Первая версия директивы ищет только стандарт: каталоги. Стандартная библиотека С++, а также стандартная библиотека C, неявно включается в стандартные каталоги include. Стандарт включить каталоги могут управляться пользователем через компилятор варианты.

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

В случае, если файл не найден, программа плохо сформирована.

0
ответ дан SM AMRAN 07 янв. '17 в 7:39 2017-01-07 07:39

Существует два способа написания оператора #include. Bu,

 #include"filename" #include<filename> 

Значение каждой формы

 #include"mylib.h" 

Эта команда будет искать файл mylib.h в текущем каталоге, а также указанный список каталогов, как упоминалось, n путь поиска, который может быть настроен.

 #include<mylib.h> 

Эта команда будет искать файл mylib.h в указанном списке каталогов.

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

0
ответ дан Noshiii 18 авг. '18 в 12:24 2018-08-18 12:24

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

-1
ответ дан mellis 02 сент. '08 в 1:19 2008-09-02 01:19

#include <filename>

найдет соответствующий файл из библиотеки С++. это означает, что если у вас есть файл hello.h в папке библиотеки С++, #include <hello.h> загрузит его.

Но,

#include "filename"

найдет файл в том же каталоге, где находится ваш исходный файл.

Кроме того,

#include "path_to_file/filename"

найдет файл в каталоге, который вы ввели в path_to_file .

-1
ответ дан user5058091 21 мая '16 в 12:51 2016-05-21 12:51
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос