Two scenarios where the definition of a function in C changes, are dynamic libraries on OSes that allow reloading the same library multiple times, or self-rewriting code.
Here you stay within the realms of a compiled language implementation, where what happens, is only expecified by compiler specific features, or OS capabilities handling executables and dynamic libraries.
Compiled code with dynamic replacement during execution,
https://learn.microsoft.com/en-us/visualstudio/debugger/hot-...
https://dev.epicgames.com/documentation/en-us/unreal-engine/...
Plain interpreters,
https://iel.ucdavis.edu/publication/2006/CUJ_proof.pdf
Just some examples.
>
Warning message
If you see the following dialog box, Hot Reload is unable to apply the current edits without restarting. You can choose either to rebuild the app and apply changes (restart) or to continue editing. If you rebuild, all application state is lost. If you continue editing, it's possible that additional changes or corrections might cause Hot Reload to work again.
[Screenshot of the apply changes dialog box]
If you select the Always rebuild when changes can't be applied option in the dialog box, you won't see the dialog box again in the current Visual Studio session, and Visual Studio will automatically rebuild and reload instead of showing the dialog box.