On 4 janv. 2015, at 15:10, Thomas Preud'homme <[email protected]> wrote: > Le dimanche 4 janvier 2015, 07:53:44 Sergey Korshunoff a écrit : >>> This patch seems unnecessary as tcc_define_symbol with a third argument >>> NULL is equivalent as setting it to 1 (#define FOO is the same as #define >>> FOO 1) >> I trying to be exactly the same as gcc. And this macros in gcc are >> as "1" not "" > > Do you have an example of where this difference matters? For all purpose > #define > FOO 1 and #define FOO should be identical.
Your explanation is confusing: #define FOO and #define FOO 1 are indeed different macro definitions with different expansions. But we are discussing predefined macros that are defined using the same function as for command line macro definitions -DFOO and -DFOO=1 command line options have identical behavior, namely defining macro FOO with value 1 parse_option_D() calls tcc_define_symbol() with the value after ‘=' or NULL if none is present. tcc_define_symbol() checks for NULL and uses “1” as the <default> value. tcc_define_symbol() creates a string from its arguments and then calls the actual parser parse_define(). Thus, If you want to add new predefined macros with the value 1, it is safe to pass NULL instead of “1” as a value. It also produces less code, but is more confusing ;-) Chqrlie. _______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
