假设我有一个名为
现在的问题是,在独立编译中
伪Matlab代码如下:
问题在于我不知道如何表达
顺便说一下,这不仅对中间结果有价值,而且对额外数据收集也有用,其中额外数据将在受保护的块中计算,并通过
在matlab中是否有这样的代码结构可以实现这一点,或者有更好的替代方案?到目前为止,在开发过程中,我只是在注释的代码中进行调整,取消注释和重新注释调试代码。
foo
的函数,它被用于一个独立应用程序中(即使用mcc -m
编译成可执行文件),其中有一个重要的中间结果bar
。通常,在函数完成后我不需要这个中间结果,因此它不是返回值。但是为了开发和调试目的,能够让这个中间结果可访问是很有用的,我可以使用assignin
将中间结果放入某个调试工作区。现在的问题是,在独立编译中
assignin
是不可能的,如果代码中有assignin
,则mcc
会报错。我想做的是只在交互式运行代码时包含assignin
,而在编译为独立应用程序时不包含assignin
。此外,这样做还可以加快速度,因为在独立应用程序中我不需要中间结果,因此不在独立应用程序中进行assignin
可以节省时间和/或内存。在任何其他编程环境中,这都被称为在调试和发布模式下编译。伪Matlab代码如下:
function res = foo()
bar = some complicated formula
if ~standalone
assignin('debug', 'foo_bar', bar)
end
res = some complicated formula involving bar
问题在于我不知道如何表达
if ~standalone
,首先我不知道如何测试是否处于独立模式,但更重要的是,这需要一些代码结构,实际上会导致mcc完全忽略受保护的代码块并且不尝试编译它,因为assignin不能在独立模式下编译。顺便说一下,这不仅对中间结果有价值,而且对额外数据收集也有用,其中额外数据将在受保护的块中计算,并通过
assignin
导出。显然,在独立版本中不应计算此类额外数据,因为它没有任何作用。在matlab中是否有这样的代码结构可以实现这一点,或者有更好的替代方案?到目前为止,在开发过程中,我只是在注释的代码中进行调整,取消注释和重新注释调试代码。
mcc
,它会对任何这样的if块进行智能处理并完全忽略它,还是会尝试编译assignin
代码,并因此无法编译。 - wich