Video: Belajar C++ Episode #31 - Prototipe Fungsi 2024
Apa yang terjadi bila Anda tidak prototipe? Seperti apa pun dalam pemrograman C, saat Anda mengatasi masalah, kompilator atau penghubung memungkinkan Anda mengetahui dengan pesan kesalahan - atau program tidak berjalan dengan benar. Ini bukan akhir dari dunia - tidak, tidak seperti memprogram robot militer atau merancang kode genetik untuk spesies baru flytrap Venus.
FUNGSI DASAR; NO RETURN
#include void prompt (); / * fungsi prototipe * / int main () {int loop; masukan char [32]; loop = 0; sementara (loop ");}
Latihan 1 : Ubah kode sumber dari Fungsi Dasar; Tidak Kembali. Tuliskan prototipe dari Baris 3. Buat hasilnya.
Kesalahan kompilator adalah hal yang indah, sangat akurat namun sepenuhnya samar. Inilah pesan kesalahan yang dihasilkan oleh Kode:: Blok, walaupun hanya bagian pesan yang relevan:
13 Peringatan: deklarasi fungsi secara implisit ' prompt '23 Peringatan: tipe yang bertentangan untuk' prompt '13 Peringatan: pernyataan implisit terdahulu dari' prompt 'ada di sini
Peringatan pertama terjadi pada Baris 13 di file kode sumber, di mana fungsi prompt () digunakan di dalam main () fungsi Kompilator memberitahu Anda bahwa Anda menggunakan fungsi tanpa prototipe Seperti pesan kesalahan mengatakan, Anda secara implisit menyatakan sebuah fungsi. Itu bukan-tidak, tapi bukan kesalahan penuh. >
Peringatan terakhir adalah referensi kembali ke tempat fungsi dipanggil, lagi di Baris 13.
Sederhananya: Kompilator tidak tahu ada apa dengan fungsi prompt (). Kode Anda mengkompilasi, tapi menjalankannya berisiko.
Latihan
2 : Edit kode sumber Anda dari Latihan 10-3. Hapus prototipe fungsi yang dikomentari di Baris 3. Potong dan tempelkan (pindahkan) fungsi prompt () dari bagian bawah daftar kode sumber ke atas, di atas fungsi main (). Simpan, bangun, dan jalankan. Menghindari Prototipe Fungsi menunjukkan solusinya untuk Latihan 2.
MENGHINDARI PROTOTIPE FUNGSI
#include / * Prompt prompt * / void prompt (void) {printf ("C: DOS>";};} int main () {int loop; masukan char [32]; loop = 0; while (loop <5) {prompt (); fgets (input, 31, stdin); Fungsi utama () pertama, diikuti oleh fungsi lain memungkinkan pembacaan yang lebih baik, walaupun Anda bebas menempatkan fungsi Anda terlebih dahulu untuk menghindari pembuatan prototipe.Dan jika tidak, ingatlah bahwa pemrogram lain mungkin melakukannya seperti itu, jadi jangan kaget saat melihatnya.
Pesan kesalahan kompilator dalam Kode:: Blok memiliki tanda kurung setelahnya. Komentar induknya mengacu pada opsi
switch, atau opsi baris perintah tradisional, yang memungkinkan pemeriksaan peringatan tertentu. Misalnya, pesan kesalahan dari Latihan 1 telah dibaca secara penuh: 11 Peringatan: deklarasi fungsi implisit 'prompt' (-Wimplicit-function-declaration) 20 Peringatan: jenis konflik untuk 'prompt' (diaktifkan secara default) >