I’m a bit hazy on the rules of declarations vs. definitions.
I have the following declaration in funcs.h:
void sumTotalEnrgyAndClush(Protein &A,Protein &B,double ans[2],double enrgyA[18][18],double enrgyB[18][18]);
Notice that ans[2] is before enrgyA and B.
In the funcs.cpp file the definition starts like this:
void sumTotalEnrgyAndClush(Protein &A,Protein &B,double enrgyA[18][18],double enrgyB[18][18],double ans[2])
It compiles (via makefile) and works fine.
I also noticed that if I remove the declaration the compiler seems to manage just fine.
Why doesn’t the change in the order of the arguments matter? Is it that the last 3 items are all pointers so the difference in order doesn’t matter?
The order does matter. In C++, functions can be overloaded, so two or more functions can have the same name if they have different parameters (or, if they are member functions, if they differ in const-qualification).
You have actually declared two
sumTotalEnrgyAndClushfunctions. The declaration in the header file declares one function that is never defined, and the declaration in the source file declares and defines a second function.If you tried to use the function declared in the header file (by calling it or taking its address, for example), you would get an error because that function is not defined.