gpt4 book ai didi

c++ - 如何将 `__ramfunc` 固有函数应用于构造函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:26 26 4
gpt4 key购买 nike

我需要将所有代码放入 ram(我正在编写 flash)。我正在使用 IAR 7.80,并且在每个函数上使用 __ramfunc 内在函数一切正常,但不适用于 C++ 构造函数。

例如我有以下类(class):

class Os_Timer {
private:
os_tmrcnt_t tmr;
public:
__ramfunc Os_Timer() { reset(); }
__ramfunc void reset() { os_TimerStart( &tmr ); }
};

我还没有找到在 ram 中定义构造函数 Os_Timer 的方法。编译器提示

expected an identifier

object attribute not allowed

在构造函数行上。

IAR 手册说 __ramfunc 必须放在返回值之前,但构造函数没有返回值。

我尝试强制执行 __ramfunc 行为但没有成功:

_Pragma("location=\"section  .textrw\"") 

_Pragma("location=\"RAM_region\"") 

有人知道怎么做吗?

最佳答案

要将 __ramfunc 应用于 C++ 构造函数,您必须使用 _Pragma("object_attribute=__ramfunc"),如下例所示。

class Os_Timer
{
private:
os_tmrcnt_t tmr;

public:
_Pragma("object_attribute=__ramfunc") Os_Timer() { reset(); }
__ramfunc void reset() { os_TimerStart(&tmr); }
};

请注意,要让它工作 os_TimerStart 也应该声明为 __ramfunc,否则 os_TimerStart 将被放置在闪存中并可能被覆盖通过您的闪存更新。为了帮助您检测到这一点,如果您尝试从声明为 __ramfunc 的函数调用未声明为 __ramfunc 的函数,编译器将发出警告。

关于c++ - 如何将 `__ramfunc` 固有函数应用于构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55967617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com