gpt4 book ai didi

specman - 在 Specman e 中,有没有办法为消息提供非最终消息标签?

转载 作者:行者123 更新时间:2023-12-01 13:47:21 25 4
gpt4 key购买 nike

我制作了 2 个记录器,每个线程一个,如下所示 (THREAD=2):

lsd_logger[THREADS]      : list of message_logger is instance; 
keep for each in lsd_logger {
soft it.tags == {appendf("DBG%d",index).as_a(message_tag)};
it.to_file == appendf("lsd%d.elog", index);
soft it.verbosity == HIGH;
it.to_screen == FALSE;
};

现在我有一个检查器,我想根据当前运行的线程向每个记录器发送一条消息,如下所示:

messagef(appendf("DBG%d",thread).as_a(message_tag), MEDIUM, "this is a message to logger %d",thread);

但我不断收到关于这不是一个持续冗长的错误。

有没有办法像这样提供 message_tag 而不是创建一个函数来处理打印?

谢谢,

最佳答案

不,这是不可能的。消息的标签必须是硬编码的,因此它应该是一个常量标签,而不是任何返回标签的表达式。

您可以通过定义如下方法来解决问题:

my_message() is {
case thread {
0: {
messagef(DBG0, MEDIUM, "this is a message to logger 0");
};
1: {
messagef(DBG1, MEDIUM, "this is a message to logger 1");
};
};
};

那么如果你想避免用重复代码编写这个非常长的方法(你甚至需要在每次线程数变化时修改它),你可以使用 define as computed 宏来代替,比如:

define <my_message'action> "my_message" as computed {
items: list of string;
for i from 0 to THREADS-1 do {
items.add(appendf("%d: {messagef(DBG%d, MEDIUM, \"this is a message to logger %d\")}", i, i, i));
};
result = appendf("case thread { %s }", str_join(items, ";"));
};

关于specman - 在 Specman e 中,有没有办法为消息提供非最终消息标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34911849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com