Magic functions are special functions that should be handled with care—they are very useful to interface with your target platform, but they can produce undefined behavior if they are not correctly used. In addition, they do not provide any kind of typing as they can only be used inside an untyped block.
Available magic functions are different from one platform to another and therefore, if you are targeting several platforms, you really have to be careful and should consider using conditional compilation.