57 lines
1.5 KiB
Text
57 lines
1.5 KiB
Text
@startuml
|
||
title Алгоритм работы препроцессора с stb_image.h
|
||
|
||
start
|
||
|
||
:Препроцессор встречает\n#include "stb_image.h";
|
||
|
||
:Открывает файл stb_image.h;
|
||
|
||
:Обрабатывает строки 1-545\n(заголовочная часть);
|
||
|
||
note right
|
||
Эта часть ВСЕГДА включается:
|
||
- typedef структур
|
||
- объявления функций
|
||
- макросы
|
||
end note
|
||
|
||
:Включает объявления в код;
|
||
|
||
if (Определен макрос\nSTB_IMAGE_IMPLEMENTATION?) then (ДА)
|
||
#LightGreen:Обрабатывает строки 547-7800+\n(блок реализации);
|
||
|
||
note right
|
||
Включается РЕАЛИЗАЦИЯ:
|
||
```cpp
|
||
STBIDEF stbi_uc *stbi_load(...) {
|
||
FILE *f = stbi__fopen(filename, "rb");
|
||
// ... код функции ...
|
||
return result;
|
||
}
|
||
```
|
||
end note
|
||
|
||
:Включает реализацию в код;
|
||
|
||
:Результат:\nФайл получает и объявления\nИ реализацию функций;
|
||
|
||
else (НЕТ)
|
||
#LightBlue:Пропускает блок\n#ifdef STB_IMAGE_IMPLEMENTATION;
|
||
|
||
note right
|
||
Реализация НЕ включается,
|
||
только объявления:
|
||
```cpp
|
||
STBIDEF stbi_uc *stbi_load(...);
|
||
```
|
||
end note
|
||
|
||
:Результат:\nФайл получает ТОЛЬКО\nобъявления функций;
|
||
endif
|
||
|
||
:Передает результат компилятору;
|
||
|
||
stop
|
||
|
||
@enduml
|