Какво е препроцесор?

Като цяло, когато някой говори за процесор в изчисленията, те имат предвид някакъв силиконов чип, който извършва изчисления. P в CPU, GPU, APU, NPU и много други форми на логически чипове означава „обработка“, т.е. централен процесор. Всеки от тях е специфичен тип процесор, оптимизиран за специфичната си функция. Препроцесорът обаче няма нищо общо с физическите процесори като CPU или GPU. Вместо това, това е термин за програмиране, специално свързан с компилирани езици.

Какво е компилатор?

Компилаторът е част от софтуера, който компилира специфичен език за програмиране в машинен код. Всички езици за програмиране трябва да бъдат преобразувани в машинен код, тъй като четливите за човека инструкции, които съставляват използваемите езици за програмиране, не са директно изпълними от компютъра. Някои са предназначени да се интерпретират в движение, когато кодът се изпълнява. Този подход е много гъвкав, което улеснява извършването на малки промени. Много други езици за програмиране обаче трябва да бъдат компилирани, за да могат да бъдат изпълнени. В малките програми това не отнема непременно много време. При по-големи програми обаче компилирането може да отнеме минути или дори часове.

Така че защо искате да използвате език, който се нуждае от компилиране? Е, по-трудно е да се направи обратно инженерство. Интерпретираните езици за програмиране често имат техния код, разпространяван така, както е, което улеснява „кражбата“. За компании, които искат да защитят своята интелектуална собственост, компилирането вмъква сложна и ненадеждна стъпка на обратно инженерство, за да видите действителния код. Компилираният софтуер също има тенденция да бъде по-малък, тъй като е оптимизиран за изпълнение. Това всъщност не е проблем с малки скриптове, но когато се работи с голям софтуер, стотици мегабайти или дори гигабайти по размер, това може да има забележим ефект.

И така, какво прави препроцесорът?

Препроцесорът е помощна програма, която се изпълнява върху код, преди да бъде компилиран. Обикновено компилаторът автоматично ще извика препроцесора, когато стартира, но те могат да се изпълняват и отделно. Задачата на препроцесора е да настрои кода точно както е предназначен. Основно прави това, като изпълнява функции за търсене и замяна.

В C, например, е стандартна практика да се използват няколко стандартни библиотеки. Тези библиотеки дефинират серия от функции, които осигуряват стандартна функционалност. За импортиране на тези библиотеки се използва ключовата дума „#include“, последвана от име на библиотека. Препроцесорът търси в кода изрази като „#include“ и ги замества. В случай на “#include” препроцесорът вмъква цялото съдържание на посочената библиотека.

Това ви позволява да запазите действително написания код лесно четим, като същевременно използвате много мощни и съществуващи инструменти. Това ви спестява от необходимостта да преоткривате колелото за всяко приложение или от необходимостта да поставите част или цялата библиотека в кодовата база.

Друга потенциална употреба на препроцесор е премахването или добавянето на определена функционалност в зависимост от намерението на компилацията. Например, ако искате да тествате нова компилация, може да бъде наистина полезно да включите куп стъпки за отстраняване на грешки. Те не само не са необходими в версиите на версията, но всъщност правят компилирания софтуер по-голям. Препроцесорът може да провери аргументите на компилатора и да определи дали определена функционалност трябва да бъде включена или игнорирана. Подобно на това, препроцесорът обикновено премахва коментарите преди компилатора, тъй като те не трябва да се включват в компилация.

Заключение

Препроцесорът е инструмент, управляван от компилатор за манипулиране на кода, преди той действително да бъде компилиран. Докато препроцесорът може да се извика отделно, той обикновено се извиква като част от процеса на компилиране. Препроцесорът търси определени дефинирани низове и ги замества със стандартно съдържание. За коментари няма замяна, но за изрази, които включват външни библиотеки, препроцесорът замества израза със съдържанието на действителната библиотека. Препроцесорът може също така да приема аргументи по време на компилиране, за да активира определена функционалност. Това често се използва за включване или изключване на функционалност за отстраняване на грешки от компилации за тестване или освобождаване.


Как да клонирате твърд диск

Как да клонирате твърд диск

В съвременната цифрова ера, където данните са ценен актив, клонирането на твърд диск в Windows може да бъде решаващ процес за мнозина. Това изчерпателно ръководство

Как да коригирам неуспешно зареждане на драйвер WUDFRd на Windows 10?

Как да коригирам неуспешно зареждане на драйвер WUDFRd на Windows 10?

Изправени ли сте пред съобщението за грешка при зареждане на компютъра, което казва, че драйверът WUDFRd не успя да се зареди на вашия компютър?

Как да коригирате код за грешка на NVIDIA GeForce Experience 0x0003

Как да коригирате код за грешка на NVIDIA GeForce Experience 0x0003

Срещате ли NVIDIA GeForce код за грешка 0x0003 на вашия работен плот? Ако да, прочетете блога, за да разберете как да поправите тази грешка бързо и лесно.

Какво е SMPS?

Какво е SMPS?

Научете какво е SMPS и значението на различните рейтинги на ефективност, преди да изберете SMPS за вашия компютър.

Защо моят Chromebook не се включва

Защо моят Chromebook не се включва

Получете отговори на въпроса Защо моят Chromebook не се включва? В това полезно ръководство за потребителите на Chromebook.

Как да докладвате на Google за фишинг измами

Как да докладвате на Google за фишинг измами

Научете как да докладвате измамник на Google, за да му попречите да мами други с това ръководство.

Roomba спира, залепва и се обръща – Коригирайте

Roomba спира, залепва и се обръща – Коригирайте

Коригирайте проблем, при който прахосмукачката робот Roomba спира, залепва и продължава да се върти.

Как да промените графичните настройки на Steam Deck

Как да промените графичните настройки на Steam Deck

Steam Deck предлага стабилно и многостранно игрово изживяване на една ръка разстояние. Въпреки това, за да оптимизирате играта си и да осигурите възможно най-доброто

Какво представлява сигурността, базирана на изолация?

Какво представлява сигурността, базирана на изолация?

Щях да се задълбоча в тема, която става все по-важна в света на киберсигурността: сигурност, базирана на изолация. Този подход към

Как да използвате Auto Clicker за Chromebook

Как да използвате Auto Clicker за Chromebook

Днес щях да разгледам инструмент, който може да автоматизира повтарящи се задачи за щракване на вашия Chromebook: Auto Clicker. Този инструмент може да ви спести време и