We are trying to understand some odd apparently inconsistent compile behavior. The subject program calls an external subroutine that features an optional argument, and there is no explicit interface to it (the subroutine was designed to be in a module but that slipped through the cracks). Compiling the program produces warning #8055 about the missing interface (the warning may be promoted to an error depending on a VS setting, which only added to the confusion). If the VS option "Clean solution" is used, then the compiling and linking (and execution) works OK. But if any edit no matter how small (such as inserting a space then deleting it) is made in the source, the warning comes back, until it is again Cleaned.
Q1: What does this "cleaning" do? Does it make sense that it would temporarily fix the missing interface warning?
Q2: When is it safe or "good practice" to do this cleaning? In this case it appears to fix a problem--although awkwardly--while in reality it only masks a serious issue that really needs to be addressed differently (i.e. provide the interface or restore the module).




