M_PRINT_ARG & M_FPRINT_ARG don't put a final semicolon at the end
of their expansion anymore (cleaner and no longer needed with the new available tools).
This commit is contained in:
1 parent
6a70eba83f
commit
017f25d9d5
2 files changed
+11
-9
No files matched your search
+3
-1
@@ -20,5 +20,7 @@ V0.2.*: * worker_start takes a 'worker_t' as an additional parameter
|
|||||||
* Rename ALGO _contains as _contain_p
|
* Rename ALGO _contains as _contain_p
|
||||||
since it is a predicate '_p' and it shall be in infinitive form.
|
since it is a predicate '_p' and it shall be in infinitive form.
|
||||||
* Rename algo _map as _for_each (Standard name).
|
* Rename algo _map as _for_each (Standard name).
|
||||||
|
* M_PRINT_ARG & M_FPRINT_ARG don't put a final semicolon at the end
|
||||||
|
of their expansion anymore (cleaner and no longer needed with the
|
||||||
|
new available tools).
|
||||||
|
|
||||||
@@ -1265,21 +1265,21 @@
|
|||||||
const void *: "%p", \
|
const void *: "%p", \
|
||||||
void *: "%p")
|
void *: "%p")
|
||||||
|
|
||||||
/* Print a C variable if it is a standard type to stdout.
|
/* Print a C variable if it is a standard type to stdout.*/
|
||||||
Note: final ';' is needed to be called within a M_MAP */
|
#define M_PRINT_ARG(x) printf(M_PRINTF_FORMAT(x), x)
|
||||||
#define M_PRINT_ARG(x) printf(M_PRINTF_FORMAT(x), x);
|
|
||||||
|
|
||||||
/* Print a C variable if it is a standard type to the given file 'f'
|
/* Print a C variable if it is a standard type to the given file 'f'.*/
|
||||||
Note: final ';' is needed to be called within a M_MAP2 */
|
#define M_FPRINT_ARG(f, x) fprintf(f, M_PRINTF_FORMAT(x), x)
|
||||||
#define M_FPRINT_ARG(f, x) fprintf(f, M_PRINTF_FORMAT(x), x);
|
|
||||||
|
#define M_SEPARATE_PER_SEMICOLON(a,b) a ; b
|
||||||
|
|
||||||
/* Generic PRINT macro: print all its inputs regardless of the type
|
/* Generic PRINT macro: print all its inputs regardless of the type
|
||||||
provided it is a generic "non-struct" type. */
|
provided it is a generic "non-struct" type. */
|
||||||
#define M_PRINT(...) do { M_MAP(M_PRINT_ARG, __VA_ARGS__) } while (0)
|
#define M_PRINT(...) do { M_REDUCE(M_PRINT_ARG, M_SEPARATE_PER_SEMICOLON, __VA_ARGS__); } while (0)
|
||||||
|
|
||||||
/* Generic FPRINT macro: print all its inputs regardless of the type
|
/* Generic FPRINT macro: print all its inputs regardless of the type
|
||||||
provided it is a generic "non-struct" type into the file 'f'. */
|
provided it is a generic "non-struct" type into the file 'f'. */
|
||||||
#define M_FPRINT(f,...) do { M_MAP2(M_FPRINT_ARG, f, __VA_ARGS__) } while (0)
|
#define M_FPRINT(f,...) do { M_REDUCE2(M_FPRINT_ARG, M_SEPARATE_PER_SEMICOLON, f, __VA_ARGS__); } while (0)
|
||||||
|
|
||||||
/* Within a C11 _Generic statement, all expressions shall be valid C
|
/* Within a C11 _Generic statement, all expressions shall be valid C
|
||||||
expression even if the case if always false, and is not executed.
|
expression even if the case if always false, and is not executed.
|
||||||
|
|||||||
Reference in new issue
Block a user