No Platform-Specific Code in Main
Keep the main function, as well as the main package, free from platform-dependant code.
This guideline is a natural and logical consequence of the fact that the main package must contain the smallest possible amount of code. When initialisation steps are encapsulated in a separate single or multiple packages, it's possible to have platform-specific initialisation wherever it is required. Other advantages of this are improved testability and separation of concerns.
Technically, the rules that manage conditional compilation apply to the main package and the files in it, as to any other package. However, if your main contains platform-specific code, it suggests there is likely a problem with design and architecture – implementation details have leaked at the highest level of the application hierarchy. The main package must be as free as possible from any details.