Если у меня есть заголовочный файл foo.h и исходный файл foo.cpp, а foo.cpp содержит что-то вроде:
#ifdef WIN32
class asdf {
asdf() { startup_code(); }
~asdf() { cleanup_code(); }
};
asdf __STARTUP_HANDLE__
#else
//unix does not require startup or cleanup code in this case
#endif
но foo.h не определяет класс asdf, скажем, у меня есть приложение bar.cpp:
#include "foo.h"
//link in foo.lib, foo.dll, foo.so, etc
int main() {
//do stuff
return 0;
}
Если bar.cpp скомпилирован на платформе WIN32, будут ли вызываться asdf () и ~ asdf () в соответствующее время (перед main () и при выходе из программы, соответственно), даже если класс asdf не определен в foo.h, но связан через foo.cpp?