C ++ tilida #delfine bilan ishlash
C ++ tilida #delfine bilan ishlash REJA: 1. #difine diriktivasi 2. Interfeysda ishlash uchun dasturlar (figma va h.k) 3. Fayl tizimlari(NTFS, FAT32 va h.k.) 4. Tarmoq protokollari 5. MD5, MD6, CRC, SHA1, SHA2 heshlash usullari 6. Hesh funksiya yaratish . Foydalanilgan adabiyotlar
C++ #define Preprotsessor buyruqlari DIRECTIVES deb ataladi va xesh belgisi (#) bilan boshlanadi. # belgisidan oldin bo'sh bo'sh joy qolmasligi kerak, oxirida esa nuqtali nuqta qo'yish kerak emas. Oldindan ishlov berish bosqichida bajarilishi mumkin bo'lgan ko'p narsalar quyidagilardan iborat: #include direktivasi orqali boshqa fayllarni kiritish #define direktivasi orqali ramziy konstantalar va makroslarni aniqlash Ba'zi preprotsessor direktivalari orqali siz ba'zi preprotsessor direktivalarini shartli ravishda kompilyatsiya qilishingiz yoki bajarishingiz mumkin. Eslatma - C++ dasturining dastlabki ishlov berish bosqichi dastur kompilyatsiya qilinishidan oldin sodir bo'ladi. C++ protsessori - bu manba kodini kompilyatsiya qilishdan oldin bajariladigan dastur. Siz allaqachon #include preprocessor direktivasi bilan ishlashni o'rgandingiz, bu sizga kerakli sarlavha fayllarini dasturingizga kiritish imkonini beradi. Ushbu munozara yoki bizniki #define preprocessor direktivasiga bag'ishlangan. #define preprocessor bizga ramziy nomlar va konstantalarni aniqlash imkonini beradi. #define dasturni kompilyatsiya qilishdan oldin matnni almashtirishga imkon beradi. Preprotsessorlar ko'rsatmalar bo'lib, ular kompilyatorga haqiqiy kompilyatsiya boshlanishidan oldin ma'lumotni qayta ishlash bo'yicha ko'rsatmalar beradi. Barcha preprotsessor direktivalari # bilan boshlanadi va satrda protsessor direktivasi oldida faqat oq bo'shliq belgilari paydo bo'lishi mumkin. Preprotsessor direktivalari C+ + iboralari emas, shuning uchun ular nuqta-vergul (;) bilan tugamaydi. Siz allaqachon barcha misollarda #include direktivasini ko'rgansiz . Ushbu makros sarlavha faylini manba faylga kiritish uchun ishlatiladi. C++ tilida #include, #define, #if, #else, #line va boshqalar qo'llab- quvvatlanadigan bir qator preprotsessor direktivalari mavjud. Keling, muhim direktivalarni ko'rib chiqaylik #define preprocessor direktivasi ramziy konstantalarni yaratadi. Simvolik konstanta makro deb ataladi va direktivaning umumiy shakli - #define macro-name replacement-text
Ushbu qator faylda paydo bo'lganda, dastur kompilyatsiya qilinishidan oldin ushbu fayldagi makrosning barcha keyingi holatlari almashtirish matni bilan almashtiriladi. Masalan - #include <iostream> using namespace std ; #define PI 3.14159 int main () { cout << "Value of PI :" << PI << endl ; return 0 ; } Keling, bizda manba kodi fayli borligini faraz qilgan holda natijani ko'rish uchun ushbu kodni oldindan qayta ishlaymiz. Keling, uni -E varianti bilan kompilyatsiya qilamiz va natijani test.p ga yo'naltiramiz. Endi, agar siz test.p ni tekshirsangiz, unda juda ko'p ma'lumotlar bo'ladi va pastki qismida siz quyidagi tarzda o'zgartirilgan qiymatni topasiz - $gcc -E test.cpp > test.p... int main () { cout << "Value of PI :" << 3.14159 << endl; return 0; } Funktsiyaga o'xshash makrolar Argumentni quyidagi tarzda qabul qiladigan makrosni aniqlash uchun #define dan foydalanishingiz mumkin Jonli demo #include <iostream> using namespace std ; #define MIN ( a , b ) ((( a )<( b )) ? a : b ) int main () {
int i , j ; i = 100 ; j = 30 ; cout << "The minimum is " << MIN ( i , j ) << endl ; return 0 ; } Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi natijani beradi - Shartli kompilyatsiya Dasturingiz manba kodining tanlangan qismlarini kompilyatsiya qilish uchun ishlatilishi mumkin bo'lgan bir nechta direktivalar mavjud. Bu jarayon shartli kompilyatsiya deb ataladi. Shartli preprotsessor konstruktsiyasi "agar" tanlash strukturasiga juda o'xshaydi. Quyidagi protsessor kodini ko'rib chiqing - #ifndef NULL #define NULL 0 #endif Nosozliklarni tuzatish uchun dasturni kompilyatsiya qilishingiz mumkin. Shuningdek, bitta makros yordamida disk raskadrovkani quyidagi tarzda yoqishingiz yoki o'chirishingiz mumkin #ifdef DEBUG cerr <<"Variable x = " << x << endl; #endif Bu, agar #ifdef DEBUG direktivasidan oldin DEBUG ramziy doimiysi aniqlangan bo'lsa, cerr bayonoti dasturda kompilyatsiya qilinishiga olib keladi. Dasturning bir qismini quyidagicha izohlash uchun #if 0 iborasidan foydalanishingiz mumkin - #if 0
code prevented from compiling #endif Keling, quyidagi misolni sinab ko'raylik - Jnli demo #include <iostream> using namespace std ; #define DEBUG #define MIN ( a , b ) ((( a )<( b )) ? a : b ) int main () { int i , j ; i = 100 ; j = 30 ; #ifdef DEBUG cerr << "Trace: Inside main function" << endl ; #endif #if 0 /* This is commented part */ cout << MKSTR ( HELLO C ++) << endl ; #endif cout << "The minimum is " << MIN ( i , j ) << endl ; #ifdef DEBUG cerr << "Trace: Coming out of main function" << endl ; #endif return 0 ; } Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi natijani beradi - # va ## operatorlari