【发布时间】:2017-07-27 21:23:28
【问题描述】:
我一直在查看 journalctl 代码,发现了以下代码块。
如果在测试条件时出现非零结果,这似乎是退出一系列条件测试的一种简写方式。很聪明。
但我不确定void 演员表的目的。是为了抑制一些编译器输出吗?即使使用-Wall 和-pedantic -pedantic-errors,g++ 也不在乎。
m1 = strjoina("_SYSTEMD_UNIT=", unit);
m2 = strjoina("COREDUMP_UNIT=", unit);
m3 = strjoina("UNIT=", unit);
m4 = strjoina("OBJECT_SYSTEMD_UNIT=", unit);
(void)(
/* Look for messages from the service itself */
(r = sd_journal_add_match(j, m1, 0)) ||
/* Look for coredumps of the service */
(r = sd_journal_add_disjunction(j)) ||
(r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0)) ||
(r = sd_journal_add_match(j, "_UID=0", 0)) ||
(r = sd_journal_add_match(j, m2, 0)) ||
/* Look for messages from PID 1 about this service */
(r = sd_journal_add_disjunction(j)) ||
(r = sd_journal_add_match(j, "_PID=1", 0)) ||
(r = sd_journal_add_match(j, m3, 0)) ||
/* Look for messages from authorized daemons about this service */
(r = sd_journal_add_disjunction(j)) ||
(r = sd_journal_add_match(j, "_UID=0", 0)) ||
(r = sd_journal_add_match(j, m4, 0))
);
f (r == 0 && endswith(unit, ".slice")) {
...
【问题讨论】:
-
可能是迷信。或警告系统损坏的编译器。
-
让垃圾代码更垃圾?任何嵌入诸如“MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1”这样的字符串的东西都非常糟糕。
-
@NeilButterworth - 有点同意。谁会想到 fc2e22bc6ee647b6b90729ab34a250b1= coredump? systemd 总是很有争议。
标签: c++