我怎么能使用编码器。在Matlab中不透明值表达式codegen吗?

11视图(30天)
我需要读一些为我的系统参数文件。我对编码器使用帮助文件中的示例。不透明的声明文件ID值。我想检查ID fopen调用是否成功完成,但我继续说这不会接受一个编码错误。不透明的数据类型的比较:
%宣布“栓”作为不透明类型的文件 *
fid = coder.opaque(“文件 * ”、“零”);
fid =编码器。ceval (fopen, cmName [rb的0]);对于c % 0项字符串
如果0 = =支撑材
coder.ceval (”exit', '-1');
其他的
:
:
这个错误发生在这条线,我比较fid为0。我试过几个备选方案(分配fid到另一个var,铸造双支撑材,进行功能的测试)但他们都失败的一种变体不允许与编码器。不透明的类型。
我认为其他人也遇到这个问题,但我没有看到任何条目在数据库中。
任何帮助将不胜感激。
谢谢肖恩

接受的答案

瑞安·利文斯顿
瑞安·利文斯顿 2016年9月21日
MATLAB R2013a注意 打开外部文件,文件关闭流 是cod万博1manbetxegen支持。其他文件I / O函数添加了最近你就可以直接使用这些没有使用MATLAB coder.ceval 在所有。
如果你决定使用 coder.ceval ,你可以这样做:
fp = coder.opaque (“文件*”,“零”);
fp = coder.ceval (fopen的,);
NULL = coder.opaque (“文件*”,“零”);
如果fp = =零
%的东西出错了
其他的
%所有好的
结束

更多的答案(2)

尼尔斯·朗德
尼尔斯·朗德 2016年9月21日
编辑:尼尔斯·朗德 2016年9月21日
coder.eval ((int), fid)可以用来返回值为整数。
例子:
fp_int = int32 (0);
fp = coder.opaque (“文件*”,“零”);%声明文件指针
fp = coder.ceval (fopen的、szFileName szMode);
fp_int = coder.ceval (“(int)”,《外交政策》);
如果(fp_int = = 0)
coder.ceval (“printf“,(“fopen返回NULL”char (10) 0]);
返回;
其他的
coder.ceval (“printf“,(“打开文件”char (10) 0]);

Kaustubha Govind
Kaustubha Govind 2012年11月5日
我不认为编码器。不透明类型变量可以参与MATLAB表达式。您可能需要将表达式转换为另一个编码器。ceval电话。

类别

找到更多的在生成代码帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!