Also, do y’all call main() in the if block or do you just put the code you want to run in the if block?

  • MajorasMaskForever@lemmy.world
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    9 days ago

    You don’t. In C everything gets referenced by a symbol during the link stage of compilation. Libraries ultimately get treated like your source code during compilation and all items land in a symbol table. Two items with the same name result in a link failure and compilation aborts. So a library and a program with main is no bueno.

    When Linux loads an executable they basically look at the program’s symbol table and search for “main” then start executing at that point

    Windows behaves mostly the same way, as does MacOS. Most RTOS’s have their own special way of doing things, bare metal you’re at the mercy of your CPU vendor. The C standard specifies that “main” is the special symbol we all just happen to use