- A+
一、关于printf与Message命令的使用问题
不论看官方help还是已经已经编好的UDF发现对于信息提示有用printf输出的,也有用Message输出的,官方help中表示:
Important: It is recommended that you use Message instead of printf in compiled UDFs.(编译时推荐用Message,而不是printf)。本人在编译型UDF中写printf均发现无输出,用Message时是可以正常输出的。本着试一试的态度,采用解释型UDF编写,发现情况正好相反,printf是可以正常输出的,而Message是会报错,如下图
解释型printf代码如下
#include "udf.h"
DEFINE_PROFILE(x_velocity,thread,nv)
{
float x[3];
float y;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread);
y=x[1];
F_PROFILE(f,thread,nv)=20.0*(1.0- y*y/(0.004*0.004));
}
end_f_loop(f,thread)
printf("Hello world!");
}
输出是正常的。总结:
解释时 printf有效,message命令不认。
编译时 message有效。二、DEFINE_ADJUST与DEFINE_ON_DEMAND区别DEFINE_ADJUST宏在迭代过程中不断更新值,而DEFINE_ON_DEMAND仅在需要时执行,如下图。
从宏命令的使用环节图也可以看出来,如下