이 지정자에 대해 가장 쉽게 생각해 볼 수 있는 방법은, 함수나 클래스나 데이터를 자기 모듈 DLL 파일에 "공용"(public)인 것으로 태그를 다는 데 사용하는 것입니다. Engine 모듈에 있는 함수를 ENGINE_API 로 마킹을 한다면, Engine 을 임포트하는 모듈은 그 함수에 직접 접근할 수 있게 됩니다.
이러한 방법은 엔진을 "모듈식"(modular) 모드(데스크톱 플랫폼에서의 DLL 파일)로 컴파일할 때만 사용됩니다. 이와 반대되는 방법은 소위 "모노리식"(monolithic) 모드로, 모든 코드를 하나의 실행파일 안에 몰아넣는 것을 말합니다. 빌드 유형은 UnrealBuildTool 세팅 및/또는 플랫폼과 빌드 환경설정에 따라 제어됩니다.
실제 API 매크로는 UBT 가 코드를 컴파일하는 방식에 따라 다음 중 하나에 해당합니다:
* "모듈식" 모드로 모듈 코드를 컴파일할 때는 `__declspec( dllexport )`.
* 임포트중인 모듈에 대한 공용 모듈 헤더를 포함할 때는 `__declspec( dllimport )`.
* "모노리식" 모드로 컴파일할 때는 공란.
API 매크로는 다른 모듈에서 정적으로 임포트되는 모듈에 대해서만 의미가 있습니다. Core 모듈이 좋은 예제입니다. UE4 의 거의 모든 모듈은 *.Build.cs 파일에 "Core" 를 임포트 종속성으로 지정합니다.
다수의 모듈은 절대 정적으로 임포트될 일이 없습니다 (예로 "SceneOutliner" 모듈). 그러한 모듈을 가리켜 동적으로 로드되는 모듈이라 합니다. 동적으로 로드되는 모듈이 엄청난 것은 (일종의 플러그인처럼) 시동시 발견되고, 종종 즉시 리로드 가능하기 때문입니다.