+++ /dev/null
-#include <stdio.h>
-
-#assign ()(Number)(0x2d9)
-
-#assign ()(NAME)(ONE)
-#assign ()[ NAME() ](1)
-
-#undef NAME
-#define NAME TwentySeven
-#assign ()[NAME](
- Number / 27
-)
-
-int main(void){
-#if 1
- printf("forty-two: %x\n" ,Number);
- printf("ONE: %x\n" ,ONE);
- printf("TwentySeven: %x\n" ,TwentySeven);
-#endif
- printf("And thus begins the dance.\n");
- return 0;
-}
; white space, including new lines, is ignored.
-
This differs from `#define`:
- -#assign takes no arguments.
-name clause must reduce to a valid #define name
-the assign is defined after the body clause has been parsed
+and for the call:
+
+ macro_call ::= identifier "(" argument_list? ")"
+
+
*/
extern bool _cpp_create_assign(cpp_reader *pfile);
,cmk_macro
,_cpp_reserve_room( pfile, 0, sizeof(cpp_macro) )
);
- name_macro->variadic = is_variadic;
- name_macro->parm.params = params;
- name_macro->paramc = param_count;
- name_macro->fun_like = true;
+ name_macro->variadic = false;
+ name_macro->paramc = 0;
+ name_macro->parm.params = NULL;
+ name_macro->fun_like = false;
unsigned int num_extra_tokens = 0;
const char *paste_op_error_msg =
,cmk_macro
,_cpp_reserve_room( pfile, 0, sizeof(cpp_macro) )
);
- body_macro->variadic = is_variadic;
- body_macro->paramc = param_count;
- body_macro->parm.params = params;
- body_macro->fun_like = true;
+ body_macro->variadic = false;
+ body_macro->paramc = 0;
+ body_macro->parm.params = NULL;
+ body_macro->fun_like = false;
parse_clause(
pfile
,body_macro->exp.tokens
,sizeof(cpp_token) * body_macro->count
);
- assign_macro->variadic = body_macro->variadic;
- assign_macro->parm.params = body_macro->parm.params;
- assign_macro->paramc = body_macro->paramc;
+ assign_macro->variadic = is_variadic;
+ assign_macro->parm.params = params;
+ assign_macro->paramc = param_count;
assign_macro->fun_like = true;