Nama fungsi : menegaskan
File header : <assert.h>
Prototipe fungsi : void menegaskan(ekspresi int);
Fungsi : Menegaskan apakah suatu ekspresi benar
Parameter : ekspresi Jika nilainya salah (yaitu 0), maka pertama-tama ia akan mencetak pesan kesalahan ke stderr, dan kemudian menghentikan program dengan memanggil batalkan.
Nilai pengembalian : Tidak ada nilai pengembalian
Mengisi ulang :
1. Panggilan yang sering akan sangat mempengaruhi kinerja program dan meningkatkan overhead tambahan. Setelah melakukan debug, Anda dapat menonaktifkan panggilan tegas dengan menyisipkan #define NDEBUG sebelum pernyataan yang berisi #include <assert.h>.
2. Periksa legalitas parameter yang dimasukkan pada awal fungsi.
3. Setiap pernyataan hanya menguji satu kondisi, karena ketika beberapa kondisi diuji pada saat yang sama, jika pernyataan gagal, tidak mungkin menentukan kondisi mana yang gagal secara intuitif.
4. Anda tidak dapat menggunakan pernyataan yang mengubah lingkungan, karena pernyataan tegas hanya berlaku di DEBUG. Jika Anda melakukan ini, Anda akan menemui masalah ketika program mengabaikan pernyataan pernyataan saat sedang berjalan, seperti:
kesalahan:
menegaskan(i++<100);
Sebab jika terjadi kesalahan, misalnya i=100 sebelum dieksekusi, maka pernyataan ini tidak akan dijalankan, dan kemudian perintah i++ tidak akan dijalankan.
benar:
menegaskan(i<100);i++;
5. Harus ada baris kosong antara pernyataan tegas dan pernyataan berikut untuk menciptakan konsistensi logis dan visual.
6. Di beberapa tempat, pernyataan tidak dapat menggantikan pemfilteran bersyarat. Penegasan digunakan untuk menghindari kesalahan yang jelas, bukan untuk menangani pengecualian. Kesalahan dan pengecualian adalah hal yang berbeda. Kesalahan tidak boleh terjadi, dan pengecualian tidak bisa dihindari. Pengecualian bahasa C dapat ditangani melalui penilaian bersyarat, dan bahasa lain memiliki mekanisme penanganan pengecualiannya sendiri. Aturan yang sangat sederhana dalam menggunakan pernyataan adalah dengan menggunakannya di awal suatu metode atau fungsi. Jika Anda menggunakannya di tengah-tengah suatu metode, Anda perlu mempertimbangkan dengan cermat apakah itu sesuai. Proses fungsional belum dimulai pada awal metode, dan masalah yang terjadi selama pelaksanaan proses fungsional hampir semuanya merupakan pengecualian.
Contoh program : Tegaskan variabel a<80 dan keluarkan hasilnya
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);//Tegaskan a<80, jika 0, keluarkan pesan kesalahan dan akhiri program , jika tidak, terus jalankan printf (Assertaistruen);return(0);}
Hasil berjalan:
Tegaskan benar