Я предполагаю, что CC_DLL
будет определено примерно так (используя синтаксис встроенных функций MSVC):
#ifdef CC_IS_IMPLEMENTATION /* or CC_IS_DLL_COMPILATION or something like that */
#define CC_DLL __declspec(dllexport)
#else
#define CC_DLL __declspec(dllimport)
#endif
Это сделано для того, чтобы иметь одно определение, которое экспортирует или импортирует класс в / из библиотекив зависимости от того, используется ли API пользователем или самой реализацией.Реализация (.cpp
файл) будет выглядеть примерно так:
// .cpp file
#define CC_IS_IMPLEMENTATION
// CC_DLL is now defined to __declspec(dllexport)
#include "myapi_stuff.h"
// implement it...
И если пользователь библиотеки / dll использует этот API (класс), он определяется как __declspec(dllimport)
для импорта реализации издлл.