One drawback of this approach is that the function prototype must be present in all files that use the function. Another drawback is that if the return type or arguments of the function are changed, all of these prototypes would need to be updated. Putting the prototype in a single, separate file avoids these issues. Assuming the prototype is moved to the file
add.h, the second source file can then become:
Now, every time the code is compiled, the latest function prototypes in
add.h will be included in the files using them, avoiding potential errors.