Ich frage mich, wie Operator in Makros funktioniert. Sie sind Makros aus glib-Quellen (glib/testutils.h
).C Makros mit Operator Erklärung
Im Code verwenden Sie assert als g_assert_cmpint(1, ==, 2);
, so Operator wie übergeben wurde. Wie es funktioniert? Was bedeutet Token in diesem Makro?
#define g_assert_cmpint(n1, cmp, n2) \
G_STMT_START { \
gint64 __n1 = (n1), __n2 = (n2); \
if (__n1 cmp __n2) ; \
else \
g_assertion_message_cmpnum( \
G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
#n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'i'); \
} G_STMT_END
und g_assert_message_cmpnum
hat eine solche Schnittstelle:
void g_assertion_message_cmpnum(const char *domain, \
const char *file,\
int line,\
const char func,\
const char *expr,\
long double arg1, \
const char *cmp,\
long double arg2,\
char numtype);
bedeutet das, dass #
wandelt cmp
Operator in einen String?
Aber dann, wie man diese Linie #n1 " " #cmp " " #n2
von einem Makro versteht?
Das OP wird es schwer haben, 'cout' und' endl' in C zu arbeiten. (Der Rest Ihrer Antwort stimme ich zu) –
Dies ist keine Antwort. –