オペレーターがマクロにどのように渡すのかと思います。 glibソース(glib/testutils.h
)のマクロです。オペレーターの説明があるマクロ
コードでは、アサートをg_assert_cmpint(1, ==, 2);
としているので、演算子はそのまま渡されます。使い方?このマクロで#
トークンは何を意味しますか?
#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
とg_assert_message_cmpnum
ようなインターフェースを持っています
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);
これは#
は、文字列にcmp
オペレータに変換することを意味するのでしょうか?
しかし、この行を理解するには#n1 " " #cmp " " #n2
マクロから?
OPは、CoutとendlがC言語で動作するのに苦労します。(残りの答えは私が同意します) –
これは答えではありません。 –