In the process of writing a series of articles I realized that I stopped using the preprocessor differentiation of user and system paths in the "technically" correct manner. Part of this is on purpose but part is basically because I don't find the differentiation particularly useful anymore. Anyway, the question is how you use includes and how much you use the different path rules and why?
With Gcc/Clang you have -I and -iquote options to control the different paths between quoted and bracketed. As far as I can remember, Cl (Visual Studio) supplies no '-iquote' style variation so the only difference is the search of the local or relative directories between brackets and quotes.
My thinking is that, obviously there is a notable difference and I do use it correctly in most cases I believe. '#include "item"' looks in the current directory first, so unless the current code location has been added to the search path, this is how you get at local headers. For almost every other usage though, I rely on controlling the include path order and using naming/nesting habits which avoid conflicts. Someone ran into conflicts recently with 'math.h' which in conjunction with proofing the code made me think about this problem and how I had been writing code to avoid it.
Other than local, or relative to the current directory, searches, what other reasons do folks use the quoted versions for? I realized my example code needed a fix since my reasons for using quotes and brackets didn't match what I put in the example code. Oops. But as stated, it got me to thinking about this and how others deal with it. I might even turn it into a little article for fun.
Edited by AllEightUp, 29 March 2013 - 12:13 PM.