Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melaksanakan Mesin Negeri dengan Cekap dalam C Menggunakan Teknik yang Dicuba-dan-Diuji?

Bagaimanakah Saya Boleh Melaksanakan Mesin Negeri dengan Cekap dalam C Menggunakan Teknik yang Dicuba-dan-Diuji?

Susan Sarandon
Lepaskan: 2024-12-31 16:43:10
asal
312 orang telah melayarinya

How Can I Efficiently Implement State Machines in C Using Tried-and-Tested Techniques?

C State-Machine Design: Teknik Perlaksanaan Dicuba-dan-Diuji

Dalam perbincangan ini, kami meneroka teknik yang telah dicuba dan diuji untuk mereka bentuk mesin keadaan dalam C.

Struct Array dan Gelung Pendekatan

Pendekatan biasa melibatkan penggunaan pelbagai struktur untuk mewakili mesin keadaan. Setiap struktur mengandungi keadaan semasa, peristiwa dan fungsi yang mengira keadaan seterusnya.

typedef struct {
    int st;
    int ev;
    int (*fn)(void);
} tTransition;
Salin selepas log masuk

Operasi Didorong Peristiwa

Mesin keadaan beroperasi dengan mengendalikan peristiwa . Gelung acara secara berterusan menyemak acara dan mencari peralihan yang sepadan dalam tatasusunan peralihan.

while (state != ST_TERM) {
    event = GetNextEvent();
    for (i = 0; i < TRANS_COUNT; i++) {
        if ((state == trans[i].st) || (ST_ANY == trans[i].st)) {
            if ((event == trans[i].ev) || (EV_ANY == trans[i].ev)) {
                state = (trans[i].fn)();
                break;
            }
        }
    }
}
Salin selepas log masuk

Wildcards for Flexibility

Wildcards (ST_ANY dan EV_ANY) boleh digunakan untuk mengendalikan acara yang sah di mana-mana negeri atau di mana-mana acara.

Lulus Struktur untuk Mesin Berbilang

Untuk mengelakkan pembolehubah global untuk mesin keadaan berbilang, penunjuk struktur boleh dihantar ke semua fungsi, membolehkan setiap mesin mengekalkan keadaannya sendiri.

Kesimpulan

Teknik ini menyediakan asas yang kukuh untuk mereka bentuk mesin keadaan yang cekap dan boleh diselenggara dalam C. Walau bagaimanapun, adalah penting untuk mempertimbangkan keperluan khusus setiap projek dan meneroka sumber tambahan serta teknik lanjutan mengikut keperluan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Mesin Negeri dengan Cekap dalam C Menggunakan Teknik yang Dicuba-dan-Diuji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan