【问题标题】:Simulink non-tunable variable as a macro/constant in C/C++ codeSimulink 非可调变量作为 C/C++ 代码中的宏/常量
【发布时间】:2023-04-09 20:28:02
【问题描述】:

我在 Simulink 中定义了一个常量参数,用于在 Matlab 功能块中创建一个固定大小的缓冲区。该参数是工作区中的一个变量。

为了生成等效的 C/C++ 代码,Simulink 需要将变量设置为“内联”,以便将其标识为不可调整。结果是文字值(比如说,200)在代码的多个位置被硬编码。

我希望将其定义为生成的 C 代码中的宏,以便可以从单个点更改缓冲区大小,而无需从 Simulink 模型重新生成代码。 在Configuration Parameters -> Code generation -> Symbols 中,您可以找到“生成标量内联参数为:”选项设置为值“宏”。但是,这无济于事。

有人知道怎么做吗?

【问题讨论】:

    标签: matlab code-generation simulink


    【解决方案1】:

    也许一个将数字硬编码在其中的函数可以帮助您。

    只需创建一个输出为 200 的函数,并在需要时随时调用它。

    【讨论】:

    • 感谢您的回答,但我没有误解,这不是我要找的。我重写了问题以使其更清楚:我们有一个 MATLAB 文件,其中定义了所有可调和非可调变量。但我的目标是生成一个 C 代码,其中可调变量和非可调变量都可以从一个点进行修改。对于后者,我喜欢在代码中使用 C 宏而不是硬编码值。无论如何,谢谢。
    • 问题是 Matlab 没有 #define 等价物。这可能是解决 Matlab 缺陷的唯一方法。也许我没有做对,但我相信使用一个只返回写入内部变量的外部函数,你可以解决这个问题。您只需在每次需要变量时调用该函数。例如:temp_var=get_var_value(); 您甚至可以在其中包含一些 if 函数,您可以使用这些函数更改变量的值,方法是使用 vararginvarargout
    • 或者,还有另一种可能的方法,那就是使用全局变量。您在开始时定义它并在所有函数中将其用作固定变量。这是我知道的全部。我希望我对你有所帮助。如果没有,祝你的解决方案好运:)
    猜你喜欢
    • 2018-05-19
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多