Saya menyiapkan CDT untuk gerhana dan menulis program hello world C sederhana:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
Program ini dibangun dan berjalan dengan benar, tetapi gerhana tetap menampilkan tanda tanya kuning ini di samping pernyataan inklusi yang mengatakan "Unresolved inclusion: <stdio.h>"
ketika saya meletakkan mouse di atasnya.
Itu tidak mempengaruhi jalannya program tetapi saya merasa agak menjengkelkan.
Apakah ada yang tahu cara menghapusnya?
c
eclipse
eclipse-cdt
standard-library
Derrick Zhang
sumber
sumber
Jawaban:
Kompilator yang digunakan Eclipse mampu menyelesaikan simbol dengan baik, jadi kode akan dikompilasi dengan baik.
Namun pelengkapan kode / pengindeks atau preprocessor yang digunakan Eclipse tidak mengetahui
stdio.h
keberadaannya.Anda perlu menentukan jalur sistem file di mana
stdio.h
lokasinya.Dokumentasi Eclipse menjelaskan hal ini dalam beberapa bagian untuk compiler:
Dan jika pelengkapan kode / pengindeks atau preprocessor secara khusus juga tidak dapat menemukan
stdio.h
:Lokasi persisnya
stdio.h
akan bergantung pada sistem yang ingin Anda tulis kodenya. Jika Anda menulis kode untuk sistem yang sama dengan tempat Anda menjalankan Eclipse, maka lokasi standarnya adalah/usr/include/stdio.h
untuk Linux, macOS, Cygwin, dll.Jika Anda melakukan kompilasi silang untuk sistem target terpisah / jarak jauh (mis. Android, Raspberry Pi, STM32), maka itu akan ditempatkan di suatu tempat di SDK yang Anda instal untuk sistem itu. Anda perlu merujuk ke dokumentasi SDK tertentu.
sumber
Saya menemukan jawaban ini (termasuk yang diterima) agak samar.
Bagi saya, saya harus menambahkan jalur tempat stdio.h berada (seperti yang dikatakan @ardnew). Di Eclipse, Anda membuka Properti proyek Anda, perluas "C / C ++ General" dan pilih "Paths and Symbols".
Pastikan Anda telah menambahkan
include
dir untuk setiap bahasa yang Anda gunakan. (Dalam kasus saya, saya hanya perlu menambahkannya ke GNU C ++.)sumber
/usr/bin/xcode-select --install
dan kemudian Anda dapat mengarahkan Eclipse ke/usr/include/
hanya menambah basis pengetahuan, saya baru saja melakukan ini di win7 dengan cygwin.
inilah yang tampaknya berhasil bagi saya.
sertakan jalur untuk c:
sertakan jalur untuk c ++:
ini memberi saya kompilasi bersih hello world.
sumber
Buka Project> Properties> C / C ++ General> Preprocessor Includes> Providers dan pilih keduanya:
Untuk masing-masing proyek juga pilih sub-entri: "Gunakan penyedia global yang dibagi antar proyek".
Diuji pada Eclipse 4.8.0 di Ubuntu 16.04 dengan C dan C ++ hello world.
sumber
Itu bisa menyelesaikan masalah. (Maafkan saya karena bahasa Inggris yang buruk)
sumber
Saya menggunakan Eclipse dengan Cygwin dan ini berhasil untuk saya:
Buka Project> Properties> C / C ++ General> Preprocessor Includes ...> Providers dan pilih "CDT GCC Built-in Compiler Settings Cygwin [Shared]".
sumber
Saya bekerja dengan beberapa konfigurasi kompilator silang , di mana saya perlu menggunakan lokasi berbeda untuk file header STD (dan variabel lingkungan lainnya).
Solusinya adalah mengatur pengindeks sehingga menggunakan konfigurasi aktif.
Sayangnya karena beberapa bug di gerhana , opsi tersebut tidak disimpan secara lokal, jadi Anda harus menggunakan ruang kerja konfigurasi jika ingin menyimpan konfigurasi tersebut saat Anda membuka eclipse lagi.
Window -> Preferences -> C / C ++ -> Indexer -> Gunakan konfigurasi build aktif
Ini akan membuat eclipse menggunakan kompiler yang tepat yang diatur dengan konfigurasi Cross GCC aktif proyek.
sumber
Sebagai catatan jawaban teratas, penting untuk menentukan di mana folder build berada, yang dapat ditambahkan melalui dialog yang dicapai dengan mengklik kanan proyek, dan memilih Properties-> C / C ++ General-> Paths and Symbols.
Pertanyaan yang tersisa adalah jalur apa yang perlu ditambahkan.
Jika Anda telah menyiapkan gcc dengan benar untuk akses baris perintah, dan perlu mengetahui jalur penyertaan default yang digunakannya, tanyakan saja; tergantung pada bahasa yang Anda minati, gunakan:
... ini akan mencantumkan pengaturan compiler default yang digunakan saat menjalankan gcc (dan perintah ini juga berfungsi jika "gcc" benar-benar merupakan alias untuk clang, seperti pada OSX).
Di bagian bawah akan ada daftar direktori penyertaan:
Jika Anda memasukkan direktori yang terdaftar di sini, dalam urutan yang terdaftar, ke dalam dialog jalur dan simbol Eclipse, Eclipse CDT seharusnya dapat menemukan header standar, dan mungkin beberapa header tambahan khusus untuk OS Anda.
(Dengan terima kasih atas jawaban devnull untuk pertanyaan terkait.)
sumber
Di ADT saya melakukan hal berikut:
sumber
Biasanya, Eclipse harus dapat secara otomatis menyelesaikan file penyertaan standar. Ini dilakukan dengan memanggil gcc dan menanyakan konfigurasinya. Kemungkinan besar Eclipse tidak menemukan gcc Anda (atau setidaknya bukan versi yang Anda gunakan untuk mengompilasi).
Daripada menentukan semua jalur penyertaan standar di setelan proyek, Anda mungkin ingin memastikan Eclipse menemukan gcc. Tambahkan direktori tempat gcc ditemukan ke variabel lingkungan PATH sebelum memulai Eclipse.
Jika Anda ingin proyek yang berbeda menggunakan kompiler yang berbeda, maka Anda mungkin ingin mengubah opsi penemuan. Ini disembunyikan secara default, jadi pertama-tama aktifkan dari Window> Preferences> C / C ++> Property Pages Settings> Tampilkan halaman "Discovery Options". Kemudian Anda dapat menemukannya di bawah C / C ++ Build> Opsi Penemuan di properti proyek.
sumber
Saya menggunakan CodeWarrior IDE berbasis eclipse untuk proyek tertanam dan saya baru saja memecahkan masalah ini dengan menghapus dan menambahkan lagi alamat sumber ke Project Properities-> C / C ++ General-> Path and Sybols-> Include Directories. Artinya, ada banyak alasan untuk menerima pesan "Penyertaan yang tidak terselesaikan:" dan ada banyak solusi juga.
sumber
Kesalahan yang saya alami saat mengonfigurasi Jalur dan Simbol adalah awalnya saya mengonfigurasi jalur penyertaan untuk bahasa yang berbeda. Saya bekerja dengan CDT dan Cygwin gnu C ++. Jadi, Anda harus mengkonfigurasi simbol dan jalur di bawah bahasa GNU C ++.
sumber
Juga diatur
${COMMAND}
kegcc
di LinuxDibawah:
Menggantikan:
dengan:
Jika Anda tidak melakukan ini, Eclipse stdout menunjukkan:
dan log di bawah
${HOME}/eclipse-workspace/.metadata/.log
acara:karena
${COMMAND} ${FLAGS}
kosong, sehingga Eclipse mencoba mengeksekusi perintah-E
berikutnya.Saya ingin tahu apakah kita dapat mendefinisikan
COMMAND
danFLAGS
variabel pada pengaturan, tetapi saya mencoba menambahkannya sebagai variabel build dan tidak berhasil.Versi C ++ dari pertanyaan: Bagaimana mengatasi "Inklusi yang belum terselesaikan: <iostream>" dalam file C ++ di Eclipse CDT?
Diuji pada Eclipse 2020-03 (4.15.0), Ubuntu 19.10, dan proyek Makefile minimal ini dengan sumber yang ada .
sumber
Apakah Anda memeriksa apakah itu dikompilasi dari baris perintah? Bagi saya membantu di Linux, apt install libc-dev.
sumber