Pemalar #define
Gunakan pemalar prapemproses.
Pemalar #define ialah pelajaran C Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C Academy merangkumi sejumlah 4 pelajaran.
Fungsi #define
#define ialah arahan prapemproses yang mencipta makro: nama yang digantikan oleh prapemproses dengan teks sebelum penyusunan.
Ia biasanya digunakan untuk memberikan nama yang mudah dibaca kepada nilai tetap seperti saiz penimbal atau had.
#define MAX_LEN 256Penggantian Teks
Makro ialah penggantian teks semata-mata. Di mana-mana MAX_LEN muncul, prapemproses menulis 256 pada tempatnya.
Tiada jenis dan tiada memori digunakan; proses ini berlaku sebelum pengkompil melihat kod tersebut.
#include <stdio.h>
#define MAX_LEN 256
int main(void) {
printf("%d\n", MAX_LEN);
return 0;
}Tanpa Koma Bertitik
Kesilapan biasa ialah mengakhiri #define dengan koma bertitik.
Koma bertitik itu menjadi sebahagian daripada teks penggantian dan boleh menyebabkan ralat yang mengelirukan. Jangan letakkannya.
#define PI 3.14159 /* correct */
#define BAD 10; /* wrong: semicolon is substituted too */Mentakrifkan Pemalar Float
Makro berfungsi untuk sebarang literal, termasuk nilai titik apung.
Di sini, PI digantikan ke dalam formula luas pada setiap penggunaan.
#include <stdio.h>
#define PI 3.14159
int main(void) {
double r = 2.0;
printf("%.2f\n", PI * r * r);
return 0;
}Makro untuk Saiz Tatasusunan
Makro sering digunakan untuk menentukan saiz tatasusunan kerana nilainya mesti diketahui pada masa penyusunan.
Penggunaan nama memastikan saiz itu berada di satu tempat dan mudah diubah.
#include <stdio.h>
#define SIZE 5
int main(void) {
int data[SIZE] = {1, 2, 3, 4, 5};
printf("%d\n", data[SIZE - 1]);
return 0;
}Sentiasa Letakkan Ungkapan dalam Kurungan
Jika makro mengembang menjadi ungkapan, apit ungkapan itu dalam kurungan.
Tanpa kurungan, keutamaan operator boleh mengubah maksud apabila makro digunakan dalam ungkapan yang lebih besar.
#define WIDTH (4 + 2) /* good */
#define BADW 4 + 2 /* risky: 10 * BADW becomes 10*4+2 */Mengapa Kurungan Penting
Atur cara ini menunjukkan perbezaannya. Dengan kurungan, WIDTH didarabkan sebagai satu keseluruhan; tanpanya, hanya sebahagian yang didarabkan.
Versi selamat mencetak 60, manakala pengembangan yang tidak selamat akan menghasilkan pengiraan yang berbeza.
#include <stdio.h>
#define WIDTH (4 + 2)
int main(void) {
printf("%d\n", 10 * WIDTH);
return 0;
}Makro Rentetan
Makro juga boleh mewakili literal rentetan, yang berguna untuk mesej tetap atau nama versi.
Teks itu digantikan tepat seperti asal, termasuk tanda petikan.
#include <stdio.h>
#define APP_NAME "CoddyKit"
int main(void) {
printf("Welcome to %s\n", APP_NAME);
return 0;
}#define berbanding const
Makro tiada jenis dan alamat; pemboleh ubah const mempunyai kedua-duanya serta mematuhi skop.
Pilih const apabila anda mahukan keselamatan jenis dan keterlihatan semasa penyahpepijatan. Gunakan #define untuk pemalar masa penyusunan seperti saiz tatasusunan.
#define M_SIZE 10
const int c_size = 10;Membuang Takrif dan Pengawal
Anda boleh membuang makro dengan #undef. Makro juga menggerakkan pengawal pengepala yang menghalang kemasukan berganda.
Ini menunjukkan corak pengawal klasik yang digunakan pada bahagian atas fail pengepala.
#ifndef CONFIG_H
#define CONFIG_H
/* header contents here */
#endifPenamaan Konvensional
Nama makro ditulis dalam UPPER_CASE mengikut konvensyen yang telah lama digunakan.
Ini menandainya secara visual sebagai pemalar prapemproses dan membantu anda mengelakkan pertembungan dengan nama pemboleh ubah biasa.
#include <stdio.h>
#define BUFFER_SIZE 1024
int main(void) {
printf("%d\n", BUFFER_SIZE);
return 0;
}Semakan Pantas
Uji pemahaman anda tentang makro.
Rumusan
#define mencipta makro yang digantikan oleh prapemproses sebagai teks, tanpa jenis, koma bertitik atau memori.
Apit ungkapan dalam kurungan dan utamakan const untuk nilai yang selamat dari segi jenis, sambil mengehadkan makro kepada keperluan masa penyusunan seperti saiz tatasusunan dan pengawal pengepala.
Pelajari C dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 39
- Pelajaran
- 144
Soalan Lazim
Adakah pelajaran “Pemalar #define” percuma?
Ya — teks penuh “Pemalar #define” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus C Academy, tingkat taraf kepada CoddyKit PRO. Kursus C Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pemalar #define”?
Gunakan pemalar prapemproses. Anda berlatih C Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan C Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran C Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Pemalar #define” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran C Academy ini?
Ya. Setiap pelajaran C Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mentakrifkan Enum
- Nilai dan Julat Enum
- Pemboleh Ubah const
- Pemalar #define