这是一个master-worker示例的示例。 main.c文件由三个函数组成,具有以下结构:
#include <simgrid/msg.h>
XBT_LOG_NEW_DEFAULT_CATEGORY(tuto, "all the info and defbug messages of this tutorial");
int master(int argc, char *argv[]){...}
int worker(int argc, char *argv[]){...}
int main(argc, char *argv[]){...}
我想将main.c
分成三个文件:main.c
,worker.c
,master.c
。
但如果我要写
XBT_LOG_NEW_DEFAULT_CATEGORY(tuto, "all the info and debug messages of this tutorial")
在每个文件中都会出错:
multiple definition of `_simgrid_log_category__tuto__constructor__'
如果我只定义一次,我就不能在其他文件中使用XBT_INFO
。
如何避免呢?
答案 0 :(得分:1)
XBT_LOG_NEW_DEFAULT_CATEGORY(tuto, "...")
定义了一个日志记录类别,因此您只能在一个.c
文件中使用它。您可以使用以下命令在另一个文件中声明(和使用)此类别:
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tuto);
在文件中调用其中一个宏后,您可以在此文件中使用XBT_INFO(...)
和朋友。