Dalam bahasa pemrograman C dan C ++, apa perbedaan antara menggunakan kurung sudut dan menggunakan kutipan dalam include
pernyataan, sebagai berikut?
#include <filename>
#include "filename"
Dalam bahasa pemrograman C dan C ++, apa perbedaan antara menggunakan kurung sudut dan menggunakan kutipan dalam include
pernyataan, sebagai berikut?
#include <filename>
#include "filename"
Jawaban:
Dalam praktiknya, perbedaannya adalah di lokasi di mana preprocessor mencari file yang disertakan.
Untuk #include <filename>
pencarian preprosesor dengan cara yang bergantung pada implementasi, biasanya dalam direktori pencarian yang ditentukan sebelumnya oleh kompiler / IDE. Metode ini biasanya digunakan untuk memasukkan file header perpustakaan standar.
Untuk #include "filename"
pencarian preprosesor pertama kali di direktori yang sama dengan file yang berisi arahan, dan kemudian mengikuti jalur pencarian yang digunakan untuk#include <filename>
formulir. Metode ini biasanya digunakan untuk memasukkan file header yang ditentukan pemrogram.
Deskripsi yang lebih lengkap tersedia di dokumentasi GCC di jalur pencarian .
#include <...>
gunakan paket yang diinstal pada sistem dan #include "..."
gunakan versi repositori terdekat. Saya mungkin memiliki mereka mundur. Either way, termasuk penjaga di header paket diawali dengan garis bawah. (Ini bisa menjadi konvensi untuk paket-paket atau mungkin cara untuk dengan sengaja mencegah pencampuran keduanya, meskipun kualifikasi versi akan lebih masuk akal bagi saya.)
Satu-satunya cara untuk mengetahui adalah membaca dokumentasi implementasi Anda.
Dalam standar C , bagian 6.10.2, paragraf 2 hingga 4 menyatakan:
Arahan preprocessing dari formulir
#include <h-char-sequence> new-line
mencari urutan tempat yang ditentukan implementasi untuk header yang diidentifikasi secara unik oleh urutan yang ditentukan antara
<
dan>
pembatas, dan menyebabkan penggantian direktif tersebut dengan seluruh konten header . Bagaimana tempat ditentukan atau tajuk yang diidentifikasi ditentukan oleh implementasi.Arahan preprocessing dari formulir
#include "q-char-sequence" new-line
menyebabkan penggantian arahan itu dengan seluruh konten file sumber diidentifikasi oleh urutan yang ditentukan antara
"
pembatas. File sumber yang dinamai dicari dengan cara yang ditentukan implementasi. Jika pencarian ini tidak didukung, atau jika pencarian gagal, arahan diolah kembali seolah-olah dibaca#include <h-char-sequence> new-line
dengan urutan berisi identik (termasuk
>
karakter, jika ada) dari arahan asli.Arahan preprocessing dari formulir
#include pp-tokens new-line
(yang tidak cocok dengan salah satu dari dua formulir sebelumnya) diizinkan. Token preprocessing setelah
include
dalam direktif diproses sama seperti pada teks normal. (Setiap pengidentifikasi yang saat ini didefinisikan sebagai nama makro diganti dengan daftar penggantian token pemrosesan sebelumnya.) Arahan yang dihasilkan setelah semua penggantian harus cocok dengan salah satu dari dua formulir sebelumnya. Metode dimana urutan token preprocessing antara a<
dan>
sepasang token preprocessing atau sepasang"
karakter digabungkan ke dalam token preprocessing nama header tunggal didefinisikan dengan implementasi.Definisi:
h-char: anggota karakter set karakter apa pun kecuali karakter baris baru dan
>
q-char: anggota karakter set karakter apa pun kecuali karakter baris baru dan
"
Urutan karakter antara <dan> merujuk ke header secara unik, yang tidak harus berupa file. Implementasi cukup bebas untuk menggunakan urutan karakter seperti yang mereka inginkan. (Namun, sebagian besar, hanya memperlakukannya sebagai nama file dan melakukan pencarian di jalur sertakan , seperti keadaan posting lainnya.)
Jika #include "file"
formulir digunakan, implementasi pertama mencari file dari nama yang diberikan, jika didukung. Jika tidak (didukung), atau jika pencarian gagal, implementasi berperilaku seolah-olah #include <file>
formulir other ( ) digunakan.
Juga, bentuk ketiga ada dan digunakan ketika #include
arahan tidak cocok dengan salah satu formulir di atas. Dalam bentuk ini, beberapa preprocessing dasar (seperti ekspansi makro) dilakukan pada "operan" dari #include
direktif, dan hasilnya diharapkan sesuai dengan salah satu dari dua bentuk lainnya.
<
dan >
sebagai kunci untuk mengindeks ke perpustakaan.
Beberapa jawaban yang baik di sini membuat referensi ke standar C tetapi lupa standar POSIX, terutama perilaku spesifik dari perintah c99 (misalnya C compiler) .
Menurut The Open Group Base Spesifikasi Issue 7 ,
Direktori -I
Ubah algoritme untuk mencari tajuk yang namanya bukan nama path absolut untuk mencari di direktori yang dinamai dengan nama path direktori sebelum mencari di tempat yang biasa. Dengan demikian, tajuk yang namanya terlampir dalam tanda kutip ganda ("") harus dicari terlebih dahulu di direktori file dengan baris #include , kemudian di direktori bernama di -I pilihan, dan terakhir di tempat-tempat biasa. Untuk tajuk yang namanya terlampir dalam kurung sudut ("<>"), tajuk hanya akan dicari dalam direktori yang bernama opsi -I dan kemudian di tempat yang biasa. Direktori yang bernama in- i opsi harus dicari dalam urutan yang ditentukan.c99 command invocation.
Jadi, dalam lingkungan yang sesuai dengan POSIX, dengan kompiler C yang memenuhi syarat POSIX, #include "file.h"
kemungkinan besar akan mencari ./file.h
terlebih dahulu, di mana .
direktori di mana file dengan #include
pernyataan, sementara #include <file.h>
, kemungkinan akan mencari /usr/include/file.h
pertama, di mana /usr/include
sistem Anda didefinisikan tempat biasa untuk header (sepertinya tidak ditentukan oleh POSIX).
c99
- yang merupakan nama POSIX untuk kompiler C. (Standar POSIX 2008 hampir tidak bisa merujuk ke C11; pembaruan 2013 ke POSIX 2008 tidak mengubah standar C yang dimaksud.)
-L
.
Dokumentasi GCC mengatakan hal berikut tentang perbedaan antara keduanya:
File header pengguna dan sistem disertakan menggunakan arahan preprocessing
‘#include’
. Ini memiliki dua varian:
#include <file>
Varian ini digunakan untuk file header sistem. Itu mencari file bernama file dalam daftar standar direktori sistem. Anda dapat menambahkan direktori ke daftar ini dengan
-I
opsi (lihat Doa ).
#include "file"
Varian ini digunakan untuk file header program Anda sendiri. Itu mencari file bernama file pertama di direktori yang berisi file saat ini, kemudian di direktori kutipan dan kemudian direktori yang sama digunakan untuk
<file>
. Anda dapat menambahkan direktori ke daftar direktori penawaran dengan-iquote
opsi. Argumen‘#include’
, apakah dibatasi dengan tanda kutip atau tanda kurung sudut, berperilaku seperti konstanta string di mana komentar tidak dikenali, dan nama makro tidak diperluas. Dengan demikian,#include <x/*y>
menentukan penyertaan file header sistem bernamax/*y
.Namun, jika garis miring terbalik terjadi dalam file, mereka dianggap sebagai karakter teks biasa, bukan karakter melarikan diri. Tak satu pun dari urutan pelarian karakter yang sesuai dengan konstanta string dalam C diproses. Jadi,
#include "x\n\\y"
tentukan nama file yang mengandung tiga garis miring terbalik. (Beberapa sistem mengartikan '\' sebagai pemisah pathname. Semua ini juga menginterpretasikan‘/’
dengan cara yang sama. Ini paling portabel untuk digunakan saja‘/’
.)Ini adalah kesalahan jika ada sesuatu (selain komentar) pada baris setelah nama file.
Itu:
"mypath/myfile" is short for ./mypath/myfile
dengan .
menjadi direktori file di mana #include
terkandung dalam, dan / atau direktori kerja saat ini dari kompiler, dan / ataudefault_include_paths
dan
<mypath/myfile> is short for <defaultincludepaths>/mypath/myfile
Jika ./
ada <default_include_paths>
, maka tidak ada bedanya.
Jika mypath/myfile
ada di direktori include lain, perilaku tidak terdefinisi.
#include "mypath/myfile"
tidak setara dengan #include "./mypath/myfile"
. Seperti jawaban piCookie mengatakan, tanda kutip ganda memberitahu kompiler untuk mencari dengan cara yang ditentukan implementasi - yang mencakup pencarian di tempat yang ditentukan #include <...>
. (Sebenarnya, ini mungkin setara, tetapi hanya karena, misalnya, /usr/include/mypath/myfile
dapat disebut sebagai /usr/include/./mypath/myfile
- setidaknya pada sistem mirip Unix.)
defaultincludepaths
, sebagai ganti untuk memberi makna lain pada .
(sebagaimana dimaksud di atas). Ini memiliki konsekuensi yang diharapkan baik #include "..."
dan #include <...>
cari dalam dirpath
The <file>
termasuk memberitahu preprocessor untuk mencari di -I
direktori dan direktori yang telah ditetapkan pertama , kemudian di direktori c file. The "file"
termasuk memberitahu preprocessor untuk mencari direktori file sumber ini pertama , dan kemudian kembali ke -I
dan telah ditetapkan. Lagi pula, semua tujuan dicari, hanya urutan pencariannya yang berbeda.
Standar 2011 sebagian besar membahas menyertakan file dalam "16.2 Sumber file inklusi".
2 Arahan preprocessing dari formulir
# include <h-char-sequence> new-line
mencari urutan tempat yang ditentukan implementasi untuk header yang diidentifikasi secara unik oleh urutan yang ditentukan antara <dan> pembatas, dan menyebabkan penggantian arahan itu dengan seluruh isi header. Bagaimana tempat ditentukan atau tajuk yang diidentifikasi ditentukan oleh implementasi.
3 Arahan preprocessing dari formulir
# include "q-char-sequence" new-line
menyebabkan penggantian arahan itu dengan seluruh konten file sumber yang diidentifikasi oleh urutan yang ditentukan antara "pembatas. File sumber yang disebutkan dicari dengan cara yang ditentukan implementasi. Jika pencarian ini tidak didukung, atau jika pencarian gagal , arahan diolah kembali seolah-olah dibaca
# include <h-char-sequence> new-line
dengan urutan berisi identik (termasuk> karakter, jika ada) dari arahan asli.
Perhatikan bahwa "xxx"
formulir menurunkan <xxx>
bentuk jika file tidak ditemukan. Sisanya ditentukan implementasi.
-I
bisnis ini ditentukan?
-I
.
#include <file.h>
memberitahu kompiler untuk mencari header di direktori "include" -nya, misalnya untuk MinGW, kompiler akan mencari file.h
di C: \ MinGW \ include \ atau di mana pun kompiler Anda diinstal.
#include "file"
memberitahu kompiler untuk mencari direktori saat ini (yaitu direktori tempat file sumber berada) file
.
Anda dapat menggunakan -I
bendera untuk GCC untuk memberi tahu bahwa, ketika menemukan tanda kurung siku, ia juga harus mencari header di direktori setelahnya -I
. GCC akan memperlakukan direktori setelah bendera seolah-olah itu adalah includes
direktori.
Misalnya, jika Anda memiliki file yang dipanggil myheader.h
di direktori Anda sendiri, Anda bisa mengatakan #include <myheader.h>
jika Anda memanggil GCC dengan flag -I .
(menunjukkan bahwa itu harus mencari termasuk dalam direktori saat ini.)
Tanpa -I
tanda, Anda harus menggunakan #include "myheader.h"
untuk memasukkan file, atau pindah myheader.h
ke include
direktori kompiler Anda.
Secara standar - ya, mereka berbeda:
Arahan preprocessing dari formulir
#include <h-char-sequence> new-line
mencari urutan tempat yang ditentukan implementasi untuk header yang diidentifikasi secara unik oleh urutan yang ditentukan antara
<
dan>
pembatas, dan menyebabkan penggantian direktif tersebut dengan seluruh konten header. Bagaimana tempat ditentukan atau tajuk yang diidentifikasi ditentukan oleh implementasi.Arahan preprocessing dari formulir
#include "q-char-sequence" new-line
menyebabkan penggantian arahan itu dengan seluruh konten file sumber diidentifikasi oleh urutan yang ditentukan antara
"
pembatas. File sumber yang dinamai dicari dengan cara yang ditentukan implementasi. Jika pencarian ini tidak didukung, atau jika pencarian gagal, arahan diolah kembali seolah-olah dibaca#include <h-char-sequence> new-line
dengan urutan berisi identik (termasuk
>
karakter, jika ada) dari arahan asli.Arahan preprocessing dari formulir
#include pp-tokens new-line
(yang tidak cocok dengan salah satu dari dua formulir sebelumnya) diizinkan. Token preprocessing setelah
include
dalam direktif diproses sama seperti pada teks normal. (Setiap pengidentifikasi yang saat ini didefinisikan sebagai nama makro diganti dengan daftar penggantian token pemrosesan sebelumnya.) Arahan yang dihasilkan setelah semua penggantian harus cocok dengan salah satu dari dua formulir sebelumnya. Metode dimana urutan token preprocessing antara a<
dan>
sepasang token preprocessing atau sepasang"
karakter digabungkan ke dalam token preprocessing nama header tunggal didefinisikan dengan implementasi.Definisi:
h-char: anggota karakter set karakter apa pun kecuali karakter baris baru dan
>
q-char: anggota karakter set karakter apa pun kecuali karakter baris baru dan
"
Perhatikan bahwa standar tidak memberi tahu hubungan apa pun antara perilaku yang ditentukan implementasi. Bentuk pertama mencari dalam satu cara yang ditentukan implementasi, dan yang lainnya dengan cara yang mungkin (mungkin lainnya) yang ditentukan implementasi. Standar ini juga menentukan bahwa file yang disertakan tertentu harus ada (misalnya, <stdio.h>
).
Secara formal Anda harus membaca manual untuk kompiler Anda, namun biasanya (berdasarkan tradisi) #include "..."
formulir mencari direktori file di mana #include
ditemukan pertama kali, dan kemudian direktori yang #include <...>
dicari bentuknya (jalur sertakan, misalnya header sistem ).
Terima kasih atas jawaban yang bagus, esp. Adam Stelmaszczyk dan piCookie, dan aib.
Seperti banyak programmer, saya telah menggunakan konvensi informal menggunakan "myApp.hpp"
formulir untuk file aplikasi spesifik, dan <libHeader.hpp>
formulir untuk file sistem perpustakaan dan kompiler, yaitu file yang ditentukan dalam /I
dan INCLUDE
variabel lingkungan, selama bertahun-tahun berpikir itu adalah standar.
Namun, standar C menyatakan bahwa urutan pencarian spesifik implementasi, yang dapat membuat portabilitas rumit. Untuk membuat keadaan menjadi lebih buruk, kami menggunakan jam, yang secara otomatis mencari tahu di mana file yang disertakan. Anda dapat menggunakan jalur relatif atau absolut untuk file sertakan Anda. yaitu
#include "../../MyProgDir/SourceDir1/someFile.hpp"
Versi MSVS yang lebih lama membutuhkan backslash ganda (\\), tetapi sekarang tidak diperlukan. Saya tidak tahu kapan itu berubah. Cukup gunakan garis miring untuk kompatibilitas dengan 'nix (Windows akan menerimanya).
Jika Anda benar - benar khawatir tentang hal itu, gunakan "./myHeader.h"
untuk menyertakan file dalam direktori yang sama dengan kode sumber (proyek saya saat ini, sangat besar memiliki duplikat termasuk nama file yang berserakan - benar-benar masalah manajemen konfigurasi).
Berikut penjelasan MSDN yang disalin di sini untuk kenyamanan Anda).
Formulir dikutip
Pra preprosesor mencari file yang disertakan dalam urutan ini:
- Di direktori yang sama dengan file yang berisi pernyataan #include.
- Dalam direktori file yang saat ini dibuka sertakan, dalam urutan terbalik di mana
mereka dibuka. Pencarian dimulai di direktori induk termasuk file dan
terus ke atas melalui direktori kakek termasuk file.- Sepanjang jalur yang ditentukan oleh setiap
/I
opsi kompiler.- Sepanjang jalur yang ditentukan oleh
INCLUDE
variabel lingkungan.Bentuk braket sudut
Pra preprosesor mencari file yang disertakan dalam urutan ini:
- Sepanjang jalur yang ditentukan oleh setiap
/I
opsi kompiler.- Ketika kompilasi terjadi pada baris perintah, di sepanjang jalur yang ditentukan oleh
INCLUDE
variabel lingkungan.
Setidaknya untuk versi GCC <= 3.0, bentuk braket sudut tidak menghasilkan ketergantungan antara file yang disertakan dan yang disertakan.
Jadi, jika Anda ingin membuat aturan dependensi (menggunakan opsi GCC -M untuk contoh), Anda harus menggunakan formulir yang dikutip untuk file yang harus dimasukkan dalam pohon dependensi.
Untuk #include ""
kompiler biasanya mencari folder file yang berisi yang termasuk dan kemudian folder lainnya. Untuk #include <>
kompiler tidak mencari folder file saat ini.
<filename>
dan "filename"
mencari tempat yang ditentukan implementasi.
Saat Anda menggunakan #include <filename>, pra-prosesor mencari file dalam direktori file header C \ C ++ (stdio.h \ cstdio, string, vektor, dll.). Tapi, ketika Anda menggunakan #include "nama file": pertama, pra-prosesor mencari file di direktori saat ini, dan jika tidak ada di sini - ia mencarinya di direktori file header C \ C ++.
#include
arahan tidak sepenuhnya terkait dengan file sama sekali.
Tanda kurung #include with angle akan mencari "daftar tempat yang bergantung pada implementasi" (yang merupakan cara yang sangat rumit untuk mengatakan "header sistem") untuk menyertakan file.
Sebuah #include dengan tanda kutip hanya akan mencari file (dan, "dalam cara yang tergantung pada implementasi", bleh). Yang berarti, dalam bahasa Inggris normal, itu akan mencoba menerapkan path / nama file yang Anda lemparkan padanya dan tidak akan menambah alur sistem atau merusaknya.
Juga, jika #include "" gagal, itu dibaca kembali sebagai #include <> oleh standar.
The dokumentasi gcc memiliki (compiler tertentu) deskripsi yang meskipun menjadi spesifik untuk gcc dan tidak standar, adalah jauh lebih mudah dimengerti daripada pengacara gaya bicara dari standar ISO.
zlib.h
di jalur pencarian 'pengguna' saya, dan versi yang berbeda ada di jalur pencarian sistem, lalu apakah #include <zlib.h>
termasuk versi sistem dan #include "zlib.h"
termasuk saya sendiri?
#include "filename" // User defined header
#include <filename> // Standard library header.
Contoh:
Nama file di sini adalah 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
Dalam implementasi kelas (misalnya,, Seller.cpp
dan dalam file lain yang akan menggunakan file Seller.h
), header yang ditentukan oleh pengguna sekarang harus dimasukkan, sebagai berikut:
#include "Seller.h"
#include <>
untuk file header yang sudah ditentukan sebelumnyaJika file header sudah ditentukan maka Anda cukup menulis nama file header di kurung sudut, dan akan terlihat seperti ini (dengan asumsi kami memiliki nama file header yang sudah ditentukan sebelumnya iostream):
#include <iostream>
#include " "
adalah untuk file header yang didefinisikan programmerJika Anda (programmer) menulis file header Anda sendiri maka Anda akan menulis nama file header dalam tanda kutip. Jadi, misalkan Anda menulis file header yang disebut myfile.h
, maka ini adalah contoh bagaimana Anda akan menggunakan arahan include untuk memasukkan file itu:
#include "myfile.h"
Banyak jawaban di sini fokus pada jalur yang akan dicari oleh kompiler untuk menemukan file. Walaupun ini adalah apa yang dilakukan kebanyakan kompiler, kompiler yang menyesuaikan diizinkan untuk diprogram dengan efek dari header standar, dan untuk memperlakukan, katakanlah, #include <list>
sebagai saklar, dan itu tidak perlu ada sebagai file sama sekali.
Ini bukan murni hipotetis. Setidaknya ada satu kompiler yang bekerja seperti itu. #include <xxx>
Disarankan hanya menggunakan header standar.
#include <abc.h>
digunakan untuk memasukkan file perpustakaan standar. Jadi kompiler akan memeriksa di lokasi di mana header perpustakaan standar berada.
#include "xyz.h"
akan memberitahu kompiler untuk memasukkan file header yang ditentukan pengguna. Jadi kompiler akan memeriksa file header ini di folder saat ini atau -I
folder yang ditentukan.
Dalam C ++, sertakan file dalam dua cara:
Yang pertama adalah #include yang memberi tahu preprocessor untuk mencari file di lokasi default yang telah ditentukan. Lokasi ini sering merupakan variabel lingkungan TERMASUK yang menunjukkan path untuk memasukkan file.
Dan tipe kedua adalah #include "nama file" yang memberi tahu preprocessor untuk mencari file di direktori saat ini terlebih dahulu, kemudian mencarinya di lokasi yang telah ditentukan pengguna.
Pertama, mencari keberadaan file header di direktori saat ini dari mana direktif dipanggil. Jika tidak ditemukan, maka ia mencari dalam daftar direktori sistem standar yang telah dikonfigurasikan sebelumnya.
Ini mencari keberadaan file header di direktori saat ini dari mana direktif dipanggil.
Daftar direktori pencarian yang tepat tergantung pada sistem target, bagaimana GCC dikonfigurasi, dan di mana ia diinstal. Anda dapat menemukan daftar direktori pencarian kompiler GCC Anda dengan menjalankannya dengan opsi -v.
Anda dapat menambahkan direktori tambahan ke jalur pencarian dengan menggunakan - I dir , yang menyebabkan dir untuk dicari setelah direktori saat ini (untuk bentuk kutipan dari direktif) dan di depan direktori sistem standar.
Pada dasarnya, bentuk "xxx" hanyalah pencarian di direktori saat ini; jika tidak ditemukan jatuh kembali formulir
#include "header.h"
formulir tidak akurat, @personal_cloud. Saya menganggap jawaban piCookie dan Yann Droneaud paling relevan ketika mereka mengidentifikasi dari mana informasi mereka berasal. Saya juga tidak menemukan jawaban terpilih sepenuhnya memuaskan.
Ini #include <filename>
digunakan ketika file sistem sedang dirujuk. Itu adalah file header yang dapat ditemukan di lokasi default sistem seperti /usr/include
atau /usr/local/include
. Untuk file Anda sendiri yang perlu dimasukkan dalam program lain, Anda harus menggunakan #include "filename"
sintaks.
"<nama file>" mencari di lokasi perpustakaan C standar
sedangkan "nama file" juga mencari di direktori saat ini.
Idealnya, Anda akan menggunakan <...> untuk pustaka C standar dan "..." untuk pustaka yang Anda tulis dan ada di direktori saat ini.
Aturan umum yang sederhana adalah dengan menggunakan tanda kurung siku untuk memasukkan file header yang datang dengan kompiler. Gunakan tanda kutip ganda untuk memasukkan file header lainnya. Kebanyakan kompiler melakukannya dengan cara ini.
1.9 - File header menjelaskan lebih detail tentang arahan pra-prosesor. Jika Anda seorang programmer pemula, halaman itu seharusnya membantu Anda memahami semua itu. Saya mempelajarinya dari sini, dan saya telah mengikutinya di tempat kerja.
#include <filename>
digunakan ketika Anda ingin menggunakan file header dari sistem C / C ++ atau perpustakaan kompiler. Perpustakaan ini bisa berupa stdio.h, string.h, math.h, dll.
#include "path-to-file/filename"
digunakan ketika Anda ingin menggunakan file header kustom Anda sendiri yang ada di folder proyek Anda atau di tempat lain.
Untuk informasi lebih lanjut tentang preprosesor dan header. Baca C - Preprosesor .
#include <filename>
#include "filename"
#include <filename>
dan mencari file header di mana file header sistem disimpan.#include <filename>
.Untuk melihat urutan pencarian di sistem Anda menggunakan gcc, berdasarkan pada konfigurasi saat ini, Anda dapat menjalankan perintah berikut. Anda dapat menemukan detail lebih lanjut tentang perintah ini di sini
cpp -v /dev/null -o /dev/null
Apple LLVM versi 10.0.0 (dentang-1000.10.44.2)
Target: x86_64-apple-darwin18.0.0
Model thread: InstalledDir: Library / Developer / CommandLineTools / usr / bin
"/ Library / Developer / CommandLineTools / usr / bin / clang" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-use -Werror = usang-objc-isa-use -E -disable-free - disable-llvm-verifier -discard-value-names -main-file-name null -melokasi-model pic -pic-level 2 -mthread-model posix -mdisable-fp-eliminasi -fno-strict-return -masm-verbose - munwind-tables -target-cpu penryn -dwarf-kolom-info -debugger-tuning = lldb -target-linker-versi 409.12 -v -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/10.0.0 - isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -I / usr / local / termasuk -fdebug-kompilasi-dir / Pengguna / hogstrom -ferror-limit 19 -pesan-panjang 80 -stack-protector 1 -block -fencode-extended-block-signature -fobjc-runtime = macosx-10.14.0 -fmax-type-align = 16 -fdiagnostics-show-option -fcolor-diagnostik -traditional-cpp -o - -xc / dev / null
dentang -cc1 versi 10.0.0 (dentang-1000.10.44.2) target default x86_64-apple-darwin18.0.0 mengabaikan direktori tidak ada "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/local/include" mengabaikan nonexistent direktori "/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/Library/Frameworks"
#include "..." pencarian dimulai di sini:
#include <...> pencarian dimulai di sini:
/ usr / local / include
/ Perpustakaan / Pengembang / CommandLineTools / usr / lib / clang / 10.0.0 / termasuk
/ Perpustakaan / Pengembang / CommandLineTools / usr / termasuk
/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include
/ Library / Developer / CommandLineTools / SDKs / MacOSX10.14.sdk / System / Library / Frameworks (framework framework)
Akhir dari daftar pencarian.
Ada dua cara untuk menulis pernyataan #include. Ini adalah:
#include"filename"
#include<filename>
Arti setiap bentuk adalah
#include"mylib.h"
Perintah ini akan mencari file mylib.h
di direktori saat ini serta daftar direktori yang ditentukan seperti yang disebutkan di l sertakan jalur pencarian yang mungkin telah diatur.
#include<mylib.h>
Perintah ini akan mencari file mylib.h
dalam daftar direktori yang ditentukan saja.
Jalur pencarian sertakan tidak lain adalah daftar direktori yang akan dicari file yang disertakan. Kompiler C yang berbeda memungkinkan Anda mengatur jalur pencarian dengan cara yang berbeda.