DMD silently accepts extern(C) main functions with arbitrary arguments / return type. The spec[1] exlicitly requires one of the following forms: extern (C) int main() { ... } extern (C) int main(int argc, char** argv) { ... } [1] https://dlang.org/spec/function.html#betterc-main
Note that on some platforms there are other possible signatures for main; e.g., extern (C) int main(int argc, char** argv, char** envp) { ... }
@MoonlightSentinel created dlang/dmd pull request #13749 "Fix 22831 - Check signature of extern(C) main functions" fixing this issue: - Fix 22831 - Check signature of extern(C) main functions Enforce that the `main` function uses (most likely) valid arguments / return types. The spec / C standard denotes the following signatures: ```d int main() { ... } int main(int, char**) { ... } ``` The implemented checks are more lenient to accomodate for common deviations from the standards. See the DDOC comment of `checkMain()` for a list of accepted extensions. Exotic platforms that expect a different signature can circumvent the checks using `pragma(mangle, "main")`. See e.g. https://stackoverflow.com/questions/2108192/what-are-the-valid-signatures-for-cs-main-function https://github.com/dlang/dmd/pull/13749
dlang/dmd pull request #13749 "Fix 22831 - Check signature of extern(C) main functions" was merged into master: - 118e246c5162e81cd49a8a785ebe0cec9957f360 by MoonlightSentinel: Fix 22831 - Check signature of extern(C) main functions Enforce that the `main` function uses (most likely) valid arguments / return types. The spec / C standard denotes the following signatures: ```d int main() { ... } int main(int, char**) { ... } ``` The implemented checks are more lenient to accomodate for common deviations from the standards. See the DDOC comment of `checkMain()` for a list of accepted extensions. Exotic platforms that expect a different signature can circumvent the checks using `pragma(mangle, "main")`. See e.g. https://stackoverflow.com/questions/2108192/what-are-the-valid-signatures-for-cs-main-function https://github.com/dlang/dmd/pull/13749
*** Issue 20377 has been marked as a duplicate of this issue. ***
*** Issue 21503 has been marked as a duplicate of this issue. ***