bak*_*oda 3 c++ templates function fpga
这是我的问题的一个例子。
#include <stdio.h>
//template<std::size_t A> <-- Tried to solve the problem by using template
void func1(const int power){
const int length = 1 << power;
int twoDArrayA[length][length];
for (int j = 0; j < power; j++)
{
/* Code */
}
}
int main() {
func1(4);
func1(3);
func1(2);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以以某种方式允许编译器在编译之前推断出 func1 中的参数幂。因此,它不是编译一个函数,而是以 func1 的格式编译 4 个具有不同幂值的函数。
这样做的原因是因为我想使用 Vitis HLS 展开循环并对矩阵进行分区,以便可以在 FPGA 上实现,而可变长度循环或数组无法正常工作。
您可以使用模板来完成此操作,但语法错误。它应该是:
template<std::size_t power>
void func1(){
const std::size_t length = 1 << power;
int twoDArrayA[length][length];
...
}
int main() {
func1<4>();
...
}
Run Code Online (Sandbox Code Playgroud)
length请注意,如果您的可变长度数组 (VLA)是编译时常量(如此处所示),则它是合法的 C++ 。尽管如此,std::array这将是一个更好的选择。
PS:感谢您告诉我们您为什么要这样做。这是一个很好的接触。
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |