Is it illegal to take address of main() function?

后端 未结 3 1004
Happy的楠姐
Happy的楠姐 2021-01-18 04:53

According to this answer using function main() is illegal (§3.6.1.3) and a function is used if its name appears in a potentially evaluated expression (§3.2

3条回答
  •  醉话见心
    2021-01-18 05:33

    It's not usual to use pointer to main() or the address of main() but..

    Anyway, it is allowed since, as every function (and any symbol, e.g. variable) it has its own address. And the address of main() may be needed - especially when you write code for embedded systems and you play with dynamic loading of the code or run-time inspection. Or there are a bootloader and actual running firmware.

    Often main() is an entry point to the dynamically loaded code (e.g from FLASH to RAM) and thus it is referenced (called directly or assigned to the relevant pointer) in bootloader.

    Refer to MicroC-OS/II or VxWorks - both use main() in this way

提交回复
热议问题