petergo@microsoft.UUCP (Peter GOLDE) (10/27/90)
Consider the following C++ program with 2 files and 1 include file: A.H: #include <stdio.h> inline void foo() { static int i; ++i; printf("%d\n", i); } X.C: #include "a.h" extern void bar(); main() { foo(); bar(); } Y.C: #include "a.h" void bar() { foo(); } What is the correct output from this program: Is "1" printed twice, or is "1" then "2" printed. I believe "1" should be printed twice, since inline functions have internal linkage, so the i in X.C's version of foo() is different from the i in Y.C's version of foo(). However, this is almost certainly not what is desired, and the commentary in E+S states that inline is "purely an optimization" Furthermore, the only implementation I have which compiles this program (Turbo C++) prints "1" then "2". Could someone enlighten me as to the correct behavior, prefereably with references to E+S? --- Peter Golde: petergo%microsoft@uunet.uu.net "Motion gives the illusion of progress."