找回密码
 注册
查看: 3362|回复: 3

UDF compile时出现莫名其妙的错误!晕了◎◎◎

[复制链接]
发表于 2006-1-2 23:33:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
[这个贴子最后由ybb在 2006/01/02 11:36pm 第 1 次编辑]

我的udf文件(emp1.c)如下:

#include "udf.h"
#define ZERO_C273//摄氏零度对应的K
#define C114//C1 ID
#define C212//C2 ID
#define C310//C3 ID
#define C48//C4 ID
#define C55//C5 ID
#define MAX_VALVE_DATA_NUM160//阀门配置数据的最大个数
#define TIME_SPAN3600//时间段,s
DEFINE_PROFILE(wd,thread,index)//即函数:void name(Thread *thread, int i)
{
//本函数对于每个边界都会调用一次
////定义变量:
double fTime=RP_Get_Real("flow-time");//总的模拟时间,秒
////阀门开关状态数据:
double fV[MAX_VALVE_DATA_NUM + 1][6];
//vv[1]~vv[5]:储存C1~C5的阀门开度;
//时间坐标:
float fT[MAX_VALVE_DATA_NUM + 1];
int nL0 = 0;
for(nL0 = 1 ; nL0 <= MAX_VALVE_DATA_NUM ; nL0 ++)
{fT[nL0] = (float)nL0 * TIME_SPAN;}//单位:s
//vv数据:(这里省略了若干fv[][]数组的赋值语句。这些语句都没问题)
179   int nCurVVID,nL1,nOpen,nWallID;
180   for(nL1=1 ; nL1 < MAX_VALVE_DATA_NUM ; nL1=nL1 + 1)
181   {
182   if((fTime > fT[nL1]) && (fTime <= fT[nL1+1]))
183   {
184   nCurVVID = nL1;
185   nL1 = MAX_VALVE_DATA_NUM + 1;
186   }
187   }
188
189   double fResidualTime=fTime - fT[nCurVVID];
190   nWallID=THREAD_ID(thread)
191   double fRatio=fResidualTime / TIME_SPAN;
192   if(fRatio < fV[nCurVVID][nWallID] / 100.0 ){nOpen=1;}
193   else{nOpen=0;}
194
195   face_t f;
196   if(bOpen)
197   {
198   begin_f_loop (f,thread)
199   {
200   F_PROFILE(f,thread,index) = -6;
201   }
202   end_f_loop (f,thread)
203   }
204   }

//注:以上179...为方便阅读添加,实际代码中没有
============================
用compile方法进行编译,输出结果为:

Make sure that UDF source files are in the directory
    that contains  your case and data files. If you have an
    existing C:\udf\libudf directory, please remove this directory
    to ensure that the latest files are used.已复制         1 个文件。
(system "move user_nt.udf C:\udf\libudf\ntx86\2d")0
(system "copy C:\Fluent.Inc\fluent6.1\src\makefile_nt.udf C:\udf\libudf\ntx86\2d\makefile")已复制         1 个文件。
0
(chdir "C:\udf\libudf")()
(chdir "ntx86\2d")()
emp1.c
..\..\src\emp1.c(179) : error C2143: syntax error : missing ';;'; before ';type';
..\..\src\emp1.c(180) : error C2065: ';nL1'; : undeclared identifier
..\..\src\emp1.c(184) : error C2065: ';nCurVVID'; : undeclared identifier
..\..\src\emp1.c(189) : error C2143: syntax error : missing ';;'; before ';type';
..\..\src\emp1.c(190) : error C2065: ';nWallID'; : undeclared identifier
..\..\src\emp1.c(191) : error C2143: syntax error : missing ';;'; before ';type';
..\..\src\emp1.c(192) : error C2065: ';fRatio'; : undeclared identifier
..\..\src\emp1.c(192) : error C2065: ';nCurVVID'; : undeclared identifier
..\..\src\emp1.c(192) : error C2065: ';nOpen'; : undeclared identifier
..\..\src\emp1.c(193) : error C2065: ';nOpen'; : undeclared identifier
..\..\src\emp1.c(195) : error C2275: ';face_t'; : illegal use of this type as an expression
        C:\Fluent.Inc\fluent6.1\src\mem.h(126) : see declaration of ';face_t';
..\..\src\emp1.c(195) : error C2146: syntax error : missing ';;'; before identifier ';f';
..\..\src\emp1.c(195) : error C2065: ';f'; : undeclared identifier
..\..\src\emp1.c(196) : error C2065: ';bOpen'; : undeclared identifier
Done.

我觉得这些错误简直就是莫名其妙!
179行:这句前面根本就没少“;”
180行:前面刚刚定义了nL1,却说没定义;
....
其余大概都是这样的错误。真是冤枉啊!我在VC 6.0下面编译没有任何问题。
看了一些资料,我怀疑是这些原因:
1、编译器问题(版本不一样);
2、fluent对语句有特殊的要求;
3、有关参数设置正确;
4、文件的格式问题(ANSI格式?DOS格式?OEM格式?)
怀疑fluent的编译器不认编码为“0D 0A”的回车符。但前面的语句又为什么没问题?
5、fluent的编译器不支持for语句。
以上纯属我个人猜测。别笑哦!
哪位能指点迷津?多谢啦!
发表于 2006-2-9 21:11:04 | 显示全部楼层

UDF compile时出现莫名其妙的错误!晕了◎◎◎

face_t f;
这句话放到开头的地方就可以
发表于 2006-2-22 22:54:28 | 显示全部楼层

UDF compile时出现莫名其妙的错误!晕了◎◎◎

190   nWallID=THREAD_ID(thread);
发表于 2011-1-22 14:43:47 | 显示全部楼层
不要莫名其妙,又是注释问题,
注释需采用 c的方式,不能用c++的方式,
/*******************************/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表