Rumah > pembangunan bahagian belakang > C++ > Dalam bahasa C, makro kesihatan

Dalam bahasa C, makro kesihatan

王林
Lepaskan: 2023-09-03 18:09:08
ke hadapan
652 orang telah melayarinya

Dalam bahasa C, makro kesihatan

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.

Contoh

#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);
}
Salin selepas log masuk

Selepas prapemprosesan kod akan kelihatan seperti ini -

Contoh

#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);
}
Salin selepas log masuk

Output

a = 10, b = 21
Salin selepas log masuk

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.

Contoh

#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);
}
Salin selepas log masuk

Output

a = 11, b = 21
Salin selepas log masuk

Atas ialah kandungan terperinci Dalam bahasa C, makro kesihatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan