欢迎来到皮皮网网站!

【app源码分享论坛】【怎么阅读nginx源码】【爱客的源码】warning 源码下载

时间:2024-12-26 02:20:13 来源:站长交易源码

1.[UVM源代码研究] 如何定制一款个性化的码下打印格式
2.如何安装rwordseg工具包
3.C语言 warning C4047: 'initializing' : 'int ' differs in levels of indirection from 'void *'。
4.warning C4305: 'initializing' : truncation from 'const double' to 'float'是什么意思

warning 源码下载

[UVM源代码研究] 如何定制一款个性化的打印格式

       使用默认的打印格式时,执行如下代码:

       实际打印结果格式如下:

       查看UVM源代码,码下我们首先定位`uvm_info宏定义的码下位置:

       这段代码对uvm_info/uvm_warning/uvm_error/uvm_fatal等宏进行了描述,实际上是码下对uvm_report_*函数的封装。以`uvm_info为例,码下分析其执行过程,码下app源码分享论坛其中使用了全局函数uvm_report_enabled。码下

       这里又调用了uvm_root中定义的码下uvm_report_enabled函数。需要注意的码下是,在uvm_root中并未找到这个函数的码下定义。经过查找源代码,码下发现uvm_report_object中定义了uvm_report_enabled。码下

       为什么要通过uvm_root实例调用这个函数呢?这需要了解uvm类库的码下继承关系。通过分析,码下我们发现通过调用uvm_root中uvm_report_enabled的码下怎么阅读nginx源码函数,是因为uvm_root支持单例模式,可以获取uvm_root的单例句柄执行uvm_report_object中定义的自动继承的函数,避免了创建额外的实例。

       接下来分析函数执行过程,原本简单的获取severity对应的verbosity阈值设置,却涉及了severity的override问题。我们可以通过调用函数或运行时传入参数来对severity进行override。爱客的源码

       所有severity的override都记录在uvm_pool键值对severity_id_verbosities中。

       severity和verbosity枚举类型定义如下:

       回到uvm_report_object中行的代码,可以认为调用`uvm宏传入的verbosity值如果大于设置的verbosity阈值,则uvm_report_enabled返回0。另外行还有一种函数返回0的情况。

       关于uvm_action和verbosity的设置类似,不再展开。手机站导航源码执行`uvm_info系列宏时,不仅需要考虑severity对应的verbosity_level的设置是否大于阈值,还需要考虑对severity设置的行为是否为UVM_NO_ACTION来判断uvm_report_enabled的返回值。

       本质上,执行的是uvm_report_server中的compose_message函数,该函数规定了uvm_info系列宏的打印格式。

       这个函数的健身平台 app 源码参数filename和line是我们调用uvm_report_info传入的`uvm_file和`uvm_line。

       `__FILE__和`__LINE__是systemverilog的编译指令,在编译阶段被替换:`__FILE__被替换为当前文件的文件名,以字符串形式存在;`__LINE__被替换为当前文件的行号,以十进制数字形式存在。

       如果需要定义个性化的打印格式,可以通过从uvm_report_server继承一个类重写compose_message函数实现。需要注意的是,这里不能用set_type_override_by_type/name,因为uvm_report_server类没有使用uvm_object_utils注册,也没有实现get_type()函数,所以不能用传统的factory的override方法进行override。好在uvm_report_server已经预留好了子类server的覆盖函数set_server。

       这个静态函数可以直接使用类uvm_report_server进行调用。接下来,我们通过一个例子来看看如何实现个性化打印的定制。

       首先,我们定制自己的report_server:

       然后,在base_test中实例化并set_server:

       现在,我们来看看最初那句打印的执行情况:

       通过以上步骤,我们便实现了个性化的打印定制,该定制对4种severity同时生效。

如何安装rwordseg工具包

       å®‰è£…rwordseg工具包方式:

       ã€€ã€€1、rJava在安装后除了对path配置正确外,还有个容易忽略的细节,即R版本的选择,如果JRE是位的,那么R也应该要位的版本,否则肯定会报错。如果是在Rstudio中启动R,那么要检查下启动的R的版本是哪个,方法是看Tools-Global option的默认项。

       ã€€ã€€2、Rwordseg放在Rforge而非CRAN上,因此如果直接install.packages,基本都会失败告终。正确方法是下载源码,本地安装,而且打破一个传言,即Rwordseg只能在R3.0.2版本上安装成功,实际上,如果本地安装的化,R 3.1.0也可以安装成功。

       ã€€ã€€3. 尝试去下载源码,本地安装

       4. 在RStudio或者RConsole里面,采用tar.gz/zip的方式本地安装

C语言 warning C: 'initializing' : 'int ' differs in levels of indirection from 'void *'。

       æ²¡æœ‰ä»£ç ä¸å¥½è¯´ï¼Œé€šå¸¸æ˜¯ç”±äºŽåœ¨å‡½æ•°è°ƒç”¨æ—¶çš„某个参数需要void*指针,但程序调用时却使用了int型的表达式引起的。

warning C: 'initializing' : truncation from 'const double' to 'float'是什么意思

       你在试图把一个const double转成float

       错误不是double不能转成float

       而是你转了以后这个变量就不是const,这样就可以被修改了

       编译器是不可能允许这种情况出现的

       所以你要么去掉那个const的定义,要么在你的float前加个const

       orz,我没看前面的,因为通常情况下只有人问error的,没想到LZ居然是在问warning

       因为很早开始就不在意warning了,反正现在已经很明确自己在做什么

       顺便, _鈊_烦_薏乱你的说法应该也是不对的吧?

       初始化的时候应该不会报这个warning的

       这个warning的产生在于pi*r*r

       这个东西返回是个double,而area是float,可能产生结果过大,float无法表示的情况

       所以建议LZ把area定义为double

       当然,如果LZ确定你算的面积float可以表示的话,那么就不需要用double

更多相关资讯请点击【热点】频道>>>