gpt4 book ai didi

c++ - 是否可以在 C++ 编译时计算函数长度?

转载 作者:行者123 更新时间:2023-12-03 11:05:38 27 4
gpt4 key购买 nike

我有这段代码:

constexpr static VOID fStart()
{
auto a = 3;
a++;
}

__declspec(naked)
constexpr static VOID fEnd() {};

static constexpr auto getFSize()
{
return (SIZE_T)((PBYTE)fEnd - (PBYTE)fStart);
}

static constexpr auto fSize = getFSize();
static BYTE func[fSize];

是否可以在不使用任何标准库的情况下在编译期间将“func[fSize]”数组大小声明为“fStart()”的大小?以后需要将 fStart() 的完整代码复制到这个数组中。

最佳答案

标准 C++ 中没有获取函数长度的方法。

您需要使用特定于编译器的方法。

一种方法是让链接器创建一个段,并将您的函数放在该段中。然后使用段的长度。

您也许可以使用一些汇编语言结构来做到这一点;取决于汇编程序和汇编代码。

注意:在嵌入式系统中,移动功能代码是有原因的,例如到片上存储器或交换到外部存储器,或者对代码执行校验和。

关于c++ - 是否可以在 C++ 编译时计算函数长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65960187/

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