这是主工作线程示例的一个例子。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
。如何避免?
XBT_LOG_NEW_DEFAULT_CATEGORY(tuto, "...")
定义了一个日志记录类别,因此您应该只在一个.c
文件中使用它。您可以使用以下命令在另一个文件中声明(和使用)此类别:
XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(tuto);
在文件中调用其中一个宏后,可以在此文件中使用 XBT_INFO(...)
和 friends。