Bunga oddiy preprocessor so'l bilan erishish mumkin:
#define readEE(VAR) VAR = readEEPROM(AT24C32_ADDRESS, 1, VAR ## Pos)
Siz undan keyin foydalanishingiz mumkin:
readEE(foo);
va u kengaytiriladi:
foo = readEEPROM(AT24C32_ADDRESS, 1, fooPos);
Makrosdagi ##
operatori har ikkala tomonni ham kengaytiradi (VAR va POS) va keyin natijalarni birga birlashtiradi. VAR'nin o'zi makro (makroyu chaqirganingizda nima bo'lishidan qat'i nazar) bu qiymat bilan almashtiriladi, lekin Pos, chunki u makro emas, balki faqat Pos sifatida qoladi. Shunday qilib, "Pos" so'zi bilan birlashtirilgan o'zgarmaydigan nomingiz bilan yakunlanasiz.
Shuni eslatib o'tish joizki, bu o'zgaruvchining nomini o'zgartirilgan nomlar qatorida ishlatish mumkin emas - chunki o'zgartirilgan ismlar faqat olingan kodda emas, balki manba kodida mavjud, shuning uchun kod o'zgarmaydigan nomlar bilan hech narsa qila olmaysiz tuzilgan. Shuning uchun ishni bajarish uchun oldindan tayyorlovchidan foydalaning.
Ha, bu 120 o'zgaruvchining 120 ta kodini yozish kerakligini anglatadi, lekin ular faqat readEE (varame);
ga qisqartiriladi.
Biroq, yaxshiroq yechim, yoki Mikoilning strukturasini qo'llash yoki oddiygina qatorni ishlatish va nomlarning kontseptsiyasi haqida boshqacha fikr yuritish:
uint8_t data[120];
for (int i = 0; i < 120; i++) {
data[i] = readEEPROM(AT24C32_ADDRESS, 1, i);
);
Shuning uchun endi barcha o'zgaruvchan qadriyatlaringiz data []
qatoriga kiradi va siz faqat o'zingizning dasturda qanday qiymati borligini bilishingiz kerak - va siz har bir pozitsiyaning nomini preprocessor makrolar:
#define FAN_SPEED 12
#define N1_TOGGLE 95
#define LEDS_TOGGLE 7
Keyin raqamlarni o'rnida ushbu makrolardan foydalaning:
Serial.println(data[FAN_SPEED]);
Shu bilan bir qatorda makroları "niqoblarini" o'zgarmaydigan nomlari uchun foydalanishingiz mumkin:
#define fanSpeed data[12]
#define n1Toggle data[95]
#define ledsToggle data[7]
Hech bo'lmasa bir narsani ko'rgan bo'lardingiz: bu erda hech narsa kodingizni qisqartiradi, faqat biroz atrofdagi narsalarni olib keladi. Buni ko'rib chiqaylik - sizda 120 ta joyda saqlanadigan 120 ta o'zgaruvchi mavjud. Nima bo'lishidan qat'i nazar, siz hali ham ushbu o'zgaruvchilarga va ular joylashgan joylarga 120 ta ko'rsatgichga ega bo'lishingiz kerak. Siz haqiqatan ham qila oladigan narsalar sizning kodingizga qaraydigan biror kishi nima sodir bo'layotganini tushunish uchun eng ko'p o'qilishi mumkin bo'lgan usulni tanlashdir. Nima bo'lishidan qat'i nazar, sizga yozib qo'yadigan yoki sozlash uchun o'zgaruvchan yoki o'zgarmaydigan nomlarning uzun ro'yxati mavjud.