Hi Miklos, On Friday, 2013-02-15 11:05:37 +0100, Miklos Vajna wrote:
On Thu, Feb 14, 2013 at 02:43:16PM +0000, Caolán McNamara <caolanm@redhat.com> wrote:My best theory is that it was intended to speed up builds by having less "stuff" in the headers for compilers to parse by having the preprocessor strip out the stuff includers didn't need to see. Which would suggest that it will only be found around private methods, i.e. not protected/public methods or anything that takes up space.I think they tried to avoid including headers for enumerations this way -- given that in C++ it's not possible to declare enumerations as an incomplete type, AFAIK.
No, the actual reason indeed was to speed up compilation. Not having to include various header files in such cases was welcomed. Plus the additional benefit that the less symbols the compiler encountered if these headers were included in other sources the lesser was the chance to encounter the dreaded "compiler limit: out of keys" (aka CLOOK, grep for it ;-) error.. That was your source could have IIRC 64k symbols (identifiers, variable names, classes, methods, values, ...) after that compilation broke, forcing you to split sources into pieces. Which again is the reason that there are some xxx[1-9a-j].cxx implementing one class in some modules. Eike (tales from the past teller) -- LibreOffice Calc developer. Number formatter stricken i18n transpositionizer. New GnuPG key 0x65632D3A : 2265 D7F3 A7B0 95CC 3918 630B 6A6C D5B7 6563 2D3A Old GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3 9E96 2F1A D073 293C 05FD Support the FSFE, care about Free Software! https://fsfe.org/support/?erack
Attachment:
pgpl2lywXiyCX.pgp
Description: PGP signature