Commit 90e94990 authored by Rusty Russell's avatar Rusty Russell

str: add stringify()

parent 56cfebd6
...@@ -43,4 +43,16 @@ static inline bool strends(const char *str, const char *postfix) ...@@ -43,4 +43,16 @@ static inline bool strends(const char *str, const char *postfix)
return streq(str + strlen(str) - strlen(postfix), postfix); return streq(str + strlen(str) - strlen(postfix), postfix);
} }
/**
* stringify - Turn expression into a string literal
* @expr: any C expression
*
* Example:
* #define PRINT_COND_IF_FALSE(cond) \
* ((cond) || printf("%s is false!", stringify(cond)))
*/
#define stringify(expr) stringify_1(expr)
/* Double-indirection required to stringify expansions */
#define stringify_1(expr) #expr
#endif /* CCAN_STR_H */ #endif /* CCAN_STR_H */
...@@ -35,7 +35,7 @@ int main(int argc, char *argv[]) ...@@ -35,7 +35,7 @@ int main(int argc, char *argv[])
} }
} }
plan_tests(n * n * 5); plan_tests(n * n * 5 + 3);
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) { for (j = 0; j < n; j++) {
unsigned int k, identical = 0; unsigned int k, identical = 0;
...@@ -76,5 +76,11 @@ int main(int argc, char *argv[]) ...@@ -76,5 +76,11 @@ int main(int argc, char *argv[])
} }
} }
ok1(streq(stringify(NUM_SUBSTRINGS),
"((sizeof(substrings) / sizeof(substrings[0])) - 1)"));
ok1(streq(stringify(ARRAY_SIZE(substrings)),
"(sizeof(substrings) / sizeof(substrings[0]))"));
ok1(streq(stringify(i == 0), "i == 0"));
return exit_status(); return exit_status();
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment