Di sini kita akan melihat makro kebersihan dalam C. Kami tahu cara menggunakan makro dalam C. Tetapi kadangkala, ia tidak mengembalikan hasil yang dijangkakan kerana penangkapan pengecam yang tidak dijangka.
Jika kita melihat kod di bawah, kita dapat melihat bahawa ia tidak berfungsi dengan baik.
#include<stdio.h> #define INCREMENT(i) do { int a = 0; ++i; } while(0) main(void) { int a = 10, b = 20; //Call the macros two times for a and b INCREMENT(a); INCREMENT(b); printf("a = %d, b = %d</p><p>", a, b); }
Selepas prapemprosesan kod akan kelihatan seperti ini -
#include<stdio.h> #define INCREMENT(i) do { int a = 0; ++i; } while(0) main(void) { int a = 10, b = 20; //Call the macros two times for a and b do { int a = 0; ++a; } while(0) ; do { int a = 0; ++b; } while(0) ; printf("a = %d, b = %d</p><p>", a, b); }
a = 10, b = 21
Di sini kita dapat melihat bahawa nilai a tidak dikemas kini. Jadi dalam kes ini kita akan menggunakan makro kebersihan. Pengembangan makro kebersihan ini menjamin bahawa pengecam tidak ditangkap secara tidak sengaja. Di sini kami tidak akan menggunakan sebarang nama pembolehubah yang mungkin berinteraksi dengan kod dalam sambungan. Di sini pembolehubah lain "t" digunakan di dalam makro. Program itu sendiri tidak menggunakannya.
#include<stdio.h> #define INCREMENT(i) do { int t = 0; ++i; } while(0) main(void) { int a = 10, b = 20; //Call the macros two times for a and b INCREMENT(a); INCREMENT(b); printf("a = %d, b = %d</p><p>", a, b); }
a = 11, b = 21
Atas ialah kandungan terperinci Dalam bahasa C, makro kesihatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!