#pragma once #include "IPlatformFilesystem.h" // Function accessor backed by a function-local static (Meyers singleton). // Avoids the static-initialization-order fiasco that the previous // `extern IPlatformFilesystem& PlatformFilesystem;` form had: anything reading // PlatformFilesystem during another translation unit's static init was UB. // // The macro lets the existing call sites keep writing // `PlatformFilesystem.foo()` without each call site having to add the `()`. The // expansion is just a call to a function returning a reference, so codegen is // unchanged once inlined. namespace platform_internal { IPlatformFilesystem& PlatformFilesystem_get(); } #define PlatformFilesystem (::platform_internal::PlatformFilesystem_get())