Saya mengalami kesulitan menyusun program C ++ yang saya tulis.
Program ini sangat sederhana dan, setahu saya, sesuai dengan semua aturan yang ditetapkan dalam Standar C ++. Saya sudah membaca keseluruhan ISO / IEC 14882: 2003 dua kali untuk memastikan.
Programnya adalah sebagai berikut:
Ini adalah output yang saya terima ketika mencoba mengkompilasi program ini dengan Visual C ++ 2010:
c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172
Merasa cemas, saya mencoba g ++ 4.5.2, tetapi sama-sama tidak membantu:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Saya pikir Clang (versi 3.0 trunk 127530) harus bekerja, karena sangat dipuji karena kesesuaian standarnya. Sayangnya, itu bahkan tidak memberi saya salah satu pesan kesalahannya yang cantik dan disorot:
c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Sejujurnya, saya tidak benar-benar tahu apa arti dari pesan kesalahan ini.
Banyak program C ++ lainnya memiliki file sumber dengan ekstensi .cpp , jadi saya pikir mungkin saya perlu mengganti nama file saya. Saya mengubah namanya menjadi helloworld.cpp , tetapi itu tidak membantu. Saya pikir ada bug yang sangat serius di Dentang karena ketika saya mencoba menggunakannya untuk mengkompilasi program yang diganti namanya, ia membalik, mencetak "84 peringatan dan 20 kesalahan yang dihasilkan." dan membuat banyak bip komputer saya!
Apa yang saya lakukan salah di sini? Apakah saya melewatkan beberapa bagian penting dari Standar C ++? Atau apakah ketiga kompiler ini benar-benar rusak sehingga mereka tidak dapat menyusun program sederhana ini?
sumber
Awalnya dari Overv @ reddit .
sumber
Coba dengan cara ini:
sumber
Anda
<
dan>
,(
dan)
,{
dan}
tampaknya tidak cocok dengan sangat baik; Cobalah menggambar mereka dengan lebih baik.sumber
}
yang menyebabkan masalah. Coba fokus untuk mencocokkan itu dengan{
Anda dapat mencoba skrip python berikut. Perhatikan bahwa Anda perlu menginstal PIL dan pytesser .
Untuk menggunakannya, lakukan:
sumber
Anda lupa menggunakan Comic Sans sebagai font, itu sebabnya kesalahan.
sumber
Saya tidak dapat melihat baris baru setelah penjepit terakhir.
Seperti yang Anda ketahui: "Jika file sumber yang tidak kosong tidak diakhiri dengan karakter baris baru, ... perilaku tidak terdefinisi".
sumber
Program ini valid - saya tidak dapat menemukan kesalahan.
Dugaan saya adalah Anda memiliki virus di komputer Anda. Akan lebih baik jika Anda memformat ulang drive Anda, dan menginstal ulang sistem operasi.
Beri tahu kami cara kerjanya, atau jika Anda memerlukan bantuan untuk menginstal ulang.
Saya benci virus.
sumber
Saya merasa terbantu untuk tidak menulis kode di kaca monitor saya dengan spidol ajaib, meskipun terlihat bagus ketika benar-benar hitam. Layar terisi terlalu cepat dan kemudian orang-orang yang memberi saya monitor bersih memanggil saya nama setiap minggu.
Beberapa karyawan saya (saya seorang manajer) menyempatkan untuk membelikan saya salah satu komputer pad merah dengan tombol-tombol. Mereka berkata bahwa saya tidak akan membutuhkan spidol dan saya dapat membersihkan layar sendiri saat penuh tetapi saya harus berhati-hati mengocoknya. Saya kira itu halus seperti itu.
Itu sebabnya saya mempekerjakan orang-orang pintar.
sumber
File format not recognized
Anda perlu memformat file Anda dengan benar. Itu berarti menggunakan warna dan font yang tepat untuk kode Anda. Lihat dokumentasi spesifik untuk setiap kompiler karena warna-warna ini berbeda di antara kompiler;)sumber
Anda lupa pra-prosesor. Coba ini:
sumber
Apakah Anda menulis sendiri program tersebut dan kemudian memindai ke dalam komputer? Itulah yang tersirat oleh "helloworld.png". Jika itu masalahnya, Anda perlu menyadari bahwa standar C ++ (bahkan dalam edisi terbarunya) tidak memerlukan kehadiran pengenalan karakter optik, dan sayangnya itu tidak dimasukkan sebagai fitur opsional dalam kompiler saat ini.
Anda mungkin ingin mempertimbangkan untuk memindahkan gambar ke format teks. Editor teks biasa dapat digunakan; penggunaan pengolah kata, walaupun mampu menghasilkan hasil cetakan yang cantik, kemungkinan besar akan menghasilkan kesalahan yang sama dengan yang Anda dapatkan saat mencoba memindai.
Jika Anda benar-benar suka bertualang, Anda dapat mencoba untuk menulis kode Anda ke dalam pengolah kata. Cetak, sebaiknya gunakan font seperti OCR-A . Kemudian, ambil cetakan Anda dan pindai kembali. Pemindaian kemudian dapat dijalankan melalui paket OCR pihak ketiga untuk menghasilkan formulir teks. Bentuk teks kemudian dapat dikompilasi menggunakan salah satu dari banyak kompiler standar.
Namun waspadalah terhadap besarnya biaya kertas yang akan ditimbulkan selama fase debugging.
sumber
Gambar menyertakan di bawah ini untuk membuatnya dikompilasi:
Saya dengar dia bisa mengompilasi kesalahan sintaks ...
sumber
#include <JonSkeet>
.Sayangnya, Anda telah memilih tiga kompiler yang semuanya mendukung banyak bahasa, bukan hanya C ++. Mereka semua harus menebak bahasa pemrograman yang Anda gunakan. Seperti yang mungkin sudah Anda ketahui, format PNG cocok untuk semua bahasa pemrograman, bukan hanya C ++.
Biasanya kompiler dapat mengetahui bahasa itu sendiri. Sebagai contoh, jika PNG jelas digambar dengan krayon, kompiler akan tahu itu berisi Visual Basic. Jika sepertinya digambar dengan pensil mekanik, mudah mengenali insinyur di tempat kerja, menulis kode FORTRAN.
Langkah kedua ini juga tidak membantu kompiler, dalam hal ini. C dan C ++ hanya terlihat terlalu mirip, sampai ke
#include
. Oleh karena itu, Anda harus membantu kompilator memutuskan bahasa apa itu sebenarnya. Sekarang, Anda bisa menggunakan cara yang tidak standar. Misalnya, kompiler Visual Studio menerima argumen baris perintah / TC dan / TP , atau Anda bisa menggunakan opsi "Kompilasi sebagai: C ++" dalam file proyek. GCC dan Dentang memiliki mekanisme sendiri, yang saya tidak tahu.Oleh karena itu, saya akan merekomendasikan menggunakan metode standar untuk memberi tahu kompiler Anda bahwa kode berikut dalam C ++. Seperti yang sudah Anda temukan sekarang, kompiler C ++ sangat pilih-pilih tentang apa yang mereka terima. Oleh karena itu cara standar untuk mengidentifikasi C ++ adalah dengan menambahkan programmer intimidasi ke kode C ++ mereka. Sebagai contoh, baris berikut akan mengklarifikasi kepada kompiler Anda bahwa yang berikut adalah C ++ (dan dia lebih baik mengkompilasinya tanpa keluhan).
sumber
#pragma
itu cara yang benar untuk "mendapatkan pesan" ke kompiler?Coba yang ini:
sumber
endl
(L) bukanend1
(satu). Tapi +1 dilakukan dengan baik!Apakah kompiler Anda disetel dalam mode pakar ?! Jika ya, seharusnya tidak dikompilasi. Kompiler modern sudah bosan dengan "Hello World!"
sumber
OCR Berkata:
Sangat bagus, untuk bersikap adil.
sumber
Jelas, Anda harus memformat hard drive Anda.
Sungguh, kesalahan ini tidak terlalu sulit untuk dibaca.
sumber
Saya telah mengubah program Anda dari PNG ke ASCII, tetapi belum dikompilasi. Sekadar informasi, saya memang mencoba dengan lebar garis 100 dan 250 karakter tetapi keduanya menghasilkan hasil yang sebanding.
sumber
Masalah pertama adalah, Anda mencoba mengembalikan nilai yang salah di akhir fungsi utama. Standar C ++ menentukan bahwa tipe pengembalian main () adalah int, tetapi Anda mencoba mengembalikan set kosong.
Masalah lainnya adalah - setidaknya dengan g ++ - bahwa kompiler menyimpulkan bahasa yang digunakan dari akhiran file. Dari g ++ (1):
Memperbaiki ini akan meninggalkan Anda dengan aplikasi Hello World yang berfungsi penuh, seperti dapat dilihat dari demo di sini .
sumber
Font Anda payah, bagaimana seharusnya parser bisa membacanya? Ikuti kursus kaligrafi.
sumber
Kompiler Anda mengharapkan ASCII , tetapi program itu jelas ditulis menggunakan EBCDIC .
sumber
Anda mencoba mengompilasi gambar.
Ketik apa yang Anda tulis ke dalam dokumen bernama main.cpp, jalankan file itu melalui kompiler Anda, kemudian jalankan file output.
sumber
Anda perlu menentukan ketepatan hasil Anda didahului dengan tanda titik dua sesaat sebelum penjepit penutup akhir . Karena outputnya tidak numerik, presisinya nol, jadi Anda perlu ini-
: 0}
sumber
Menambahkan :
tepat setelah termasuk: P: D
sumber
std
sepanjang waktu. Mengingatkan saya untuk tidak mendapatkannya.Tampaknya kompiler Anda tidak mendukung file dalam pengkodean hmm ... Cobalah untuk mengubahnya menjadi ASCII.
sumber
Masalahnya terletak pada definisi sintaksis, coba gunakan penggaris dan kompas untuk deskripsi yang lebih klasik!
Bersulang,
sumber
Coba alihkan antarmuka input. C ++ mengharapkan keyboard dicolokkan ke komputer Anda, bukan pemindai. Mungkin ada masalah konflik periferal di sini. Saya tidak memeriksa dalam ISO Standard jika antarmuka input keyboard adalah wajib, tetapi itu berlaku untuk semua kompiler yang pernah saya gunakan. Tapi mungkin input pemindai sekarang tersedia di C99, dan dalam hal ini program Anda memang harus bekerja. Jika tidak, Anda harus menunggu rilis standar berikutnya dan meningkatkan kompiler.
sumber
Anda dapat mencoba berbagai warna untuk tanda kurung, mungkin beberapa hijau atau merah akan membantu? Saya pikir kompiler Anda tidak dapat mengenali tinta hitam: P
sumber
Apakah saya satu-satunya yang tidak bisa mengenali karakter antara 'kembali' dan titik koma? Itu mungkin saja!
sumber