On Sunday, February 24, 2013 14:28:42 Walter Bright wrote: > On 2/24/2013 12:57 PM, Andrej Mitrovic wrote: > > On 2/24/13, Jonathan M Davis <jmdavisp...@gmx.com> wrote: > >> Yeah, which just adds the confusion, because all it does is enable debug > >> bocks. > > > > The feature almost doesn't pay its weight. I mean technically you can > > use -version=Debug and then use version(Debug) blocks. All `debug` > > does is saves a little bit of typing. > > I should explain the reasoning for this. > > I've talked to many C/C++ programming managers. They lament that every C/C++ > coding group feels compelled to reinvent their own debug macro scheme. This > makes it pointlessly difficult to share code between groups. > > It's not that unlike how pre-C++98 code bases all had their own "string" > class. > > By baking one scheme into the language, people will rarely feel a need to > reinvent the wheel, and will go on to more productive uses of their time.
I don't disagree with any of this. It's just that the name of the flag (-debug) is unfortunate due to the confusion it helps engender with regards to the difference between "release" and "debug" builds. I don't know what else the flag could have reasonably been called though. Alternatively, version(Debug) could have been used instead (complete with whatever special capabilities debug statements currently grant - e.g. skipping purity checks), but that also might make the feature just enough more obscure that it wouldn't be used as much. So, I don't know that we have a good solution to the problem or that there's anything obvious that we could have done differently were we to have known better when the feature was first introduced, but there _are_ some downsides to the current scheme. - Jonathan M Davis