b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c –如何在编译时初始化数组并手动提供一些元素?

电脑杂谈  发布时间:2020-06-11 16:01:31  来源:网络整理

化化网么化工项目进展 2015 12, 11_编译 初始化_怪化猫 化猫

前端之家

Script House收集的这篇文章主要介绍了c –如何在编译时初始化数组并手动提供一些元素? Script House的编辑认为这非常好. 现在,我将与您分享并提供参考.

编译 初始化_化化网么化工项目进展 2015 12, 11_怪化猫 化猫

我正在使用指向函数的数组. 我写这段代码是因为某些元素无法用功能模板表示.

extern void zero(); // isr 0 is defined somewhere else
void one() {
  // isr 1
}
template <std::size_t N>
void Nth() {
  // isr N
}
using func = void (*)();
constexpr func interrupt_vector[256] = {
  &zero,&one,&Nth<2>,&Nth<3>,...
  &Nth<254>,&Nth<255>,};

怪化猫 化猫_编译 初始化_化化网么化工项目进展 2015 12, 11

我已经阅读了有关静态表生成和变量模板的信息,但这些都是关于初始化整个数组的信息.

如何简化代码?

怪化猫 化猫_化化网么化工项目进展 2015 12, 11_编译 初始化

@实际上,它是中断向量的一部分. 由于应该直接调用它,因此我无法使用模板专门化

template <>
void Nth<0>() {
  zero();
}

化化网么化工项目进展 2015 12, 11_编译 初始化_怪化猫 化猫

@@编辑代码. 我认为这件事很令人困惑.

如果您可以更改为使用std :: array编译 初始化,则可以使用.

using func = void (*)();
template<int...>
struct index_sequence { };
template<int From,int N,int... Is>
struct make_index_sequence_from : make_index_sequence_from<From,N - 1,Is...> { };
template<int From,int... Is>
struct make_index_sequence_from<From,From,Is...> : index_sequence<Is...> { };
template<int... Is> constexpr
std::array<func,256> make_interrupt_vector_array(index_sequence<Is...>)
{
    return {{zero,one,Nth<Is>...}};
}
constexpr
std::array<func,256> make_interrupt_vector_array()
{
    return make_interrupt_vector_array(make_index_sequence_from<2,256>());
}
constexpr auto interrupt_vector = make_interrupt_vector_array();

以上是Script House为您收集的c-如何在编译时初始化数组并手动提供一些元素?所有内容,希望本文能帮助您解决c-如何在编译时初始化数组,以及手动提供一些元素?程序开发中遇到的问题.

如果您认为Script House网站的内容不错编译 初始化,欢迎向程序员朋友推荐Script House网站.


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-241941-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...