________________________________
> From: eliben@gmail.com
[...]
> I've found the following declaration in 'Objects/stringobject.c' but it
> just defines _Py_InsertThousandsGrouping() as
> _PyString_InsertThousandsGrouping():
>
> "#define _Py_InsertThousandsGrouping _PyString_InsertThousandsGrouping"
>
> I'm looking for the opposite!
>
> No, you aren't :-)
>
> #define _Py_InsertThousandsGrouping _PyString_InsertThousandsGrouping
> #include "stringlib/localeutil.h"
>
> Now look inside "stringlib/localeutil.h" and think what the
> pre-processor does with the function definition having the #define
> above.
>
> Eli

lol I can see clearly now! :p

That reminds me of "Which came first, the chicken or the egg?"

Thank you! Somehow I got intrigued by such use...

Do you know why they've put a lot of source code inside the header files?
_______________________________________________


This depends per use-case. Commonly, code is placed in header files in C to achieve some sort of C++-template-like behavior with the preprocessor. In particular, I think Objects/stringlib/formatter.h� does this. Note this comment near its top:
">

(original) (raw)




On Wed, May 22, 2013 at 9:18 PM, Carlos Nepomuceno <carlosnepomuceno@outlook.com> wrote:
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\> From: eliben@gmail.com
\[...\]
> I've found the following declaration in 'Objects/stringobject.c' but it
\> just defines \_Py\_InsertThousandsGrouping() as
\> \_PyString\_InsertThousandsGrouping():
\>
\> "#define \_Py\_InsertThousandsGrouping \_PyString\_InsertThousandsGrouping"
\>
\> I'm looking for the opposite!
\>
\> No, you aren't :-)
\>
\> #define \_Py\_InsertThousandsGrouping \_PyString\_InsertThousandsGrouping
\> #include "stringlib/localeutil.h"
\>
\> Now look inside "stringlib/localeutil.h" and think what the
\> pre-processor does with the function definition having the #define
\> above.
\>
\> Eli

lol I can see clearly now! :p

That reminds me of "Which came first, the chicken or the egg?"

Thank you! Somehow I got intrigued by such use...

Do you know why they've put a lot of source code inside the header files?
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_


This depends per use-case. Commonly, code is placed in header files in C to achieve some sort of C++-template-like behavior with the preprocessor. In particular, I think Objects/stringlib/formatter.h� does this. Note this comment near its top:


/* Before including this, you must include either:
�� stringlib/unicodedefs.h
�� stringlib/stringdefs.h

�� Also, you should define the names:
�� FORMAT_STRING
�� FORMAT_LONG
�� FORMAT_FLOAT
�� FORMAT_COMPLEX

�� to be whatever you want the public names of these functions to
�� be.� These are the only non-static functions defined here.
*/

Eli