I know the usual approach in developing C or C++ applications is to make each modules as separate compilation units, put the definitions within them, and headers for the declarations. With good link time optimization support, such strategy seems with no problem, but in my experience LTO currently possible with gcc or g++ isn't that great.
So my idea is (well of course not my own idea, I know some projects already share the same idea), define everything in the header while making the bare functions all static, use include guards, and in the final stage, have only one compilation unit so that the compiler after preprocessing actually deals with a whole big source file. I will have to avoid circular references to achieve this, but I never found circular references necessary; there were always some ways to make them hierarchical.
So given that my project is not too big that the boosted compilation time is bearable, is my idea 'usable'? What are some other problems I may be missing? My project by the way is very performance sensitive; one additional second to save is very important. I am asking this question because I know my approach is not a usual one and I couldn't find enough resources, information, or peoples opinion with Google search. Any help appreciated.