Я потратил некоторое время на разработку библиотеки только для заголовков и наткнулся на перекресток.Везде, где я смотрю в Интернете, всегда используются встроенные функции.Но в примере stb_image.h
исходный код просто записывается в нижней половине заголовка, окруженного #ifdef STB_IMAGE_IMPLEMENTATION
, например, так:
#ifndef STB_IMAGE_H_INCLUDED_
#define STB_IMAGE_H_INCLUDED_
void some_func(args);
#endif // STB_IMAGE_H_INCLUDED_
#ifdef STB_IMAGE_IMPLEMENTATION
void some_func(args) {
// implementation
}
#endif // STB_IMAGE_IMPLEMENTATION;
Затем a (предпочтительно источник, который не является основнымФайл .cpp) определяет макрос с таким же именем и сразу после него включает заголовок:
#include <…>
#include <…>
#define STB_IMAGE_IMPLEMENTATION
#include <stb_image.h>
// other code
Зачем использовать один над другим?(или, вернее, зачем вообще это делать?)