【问题标题】:c++ Structure Arrays - "This declaration has no storage class or type specifier"c ++结构数组-“此声明没有存储类或类型说明符”
【发布时间】:2018-07-04 10:42:24
【问题描述】:

我在使用 struct 数组时遇到了问题。这是我拥有的产生 2 条红色错误行的代码。

    struct frequents
{
    int count;
    char letter;
};

frequents testArray[2];
testArray[1].letter = 'v';   

错误出现在具有声明错误的 testArray 和 '.' 下其中提到它期望一个';'。

【问题讨论】:

  • 代码在这里编译得很好。好吧,一旦你把它放到一个函数中。
  • @Ron 问题代码中缺少的函数
  • @Ron 没关系。该代码需要以某种形式存在于函数中。
  • @DavidHeffernan 我一直觉得 C++ 会更好地娱乐你的智慧和动力。我想知道你为什么还没有从 Delphi 转换?在 C++ 领域有很多值得探索的地方。
  • @Ron 一百万行代码让我望而却步........并不是说我是 C++ 的忠实粉丝。我发现它具有我喜欢的更多复杂性。我确实喜欢 C++ 编译器比无用的 Delphi 编译器生成更快的代码这一事实。但另一方面,作为一名 Win32 程序员,我认为 VCL 仍然遥遥领先。

标签: c++ arrays visual-c++ struct


【解决方案1】:

这是statement

testArray[1].letter = 'v';

语句将在函数(函数体)内执行,而不是像您现在拥有的那样在某个任意的全局命名空间中执行。将您的语句移动到主程序entry point functionlambda、独立式functionclass 成员函数体中。

或者,使用aggregate initialization 来初始化您的数组:

frequents testArray[2] = {{ 1, 'a' }, { 2, 'b' }};

或者没有额外的大括号:

frequents testArray[2] = { 1, 'a', 2, 'b' };

【讨论】:

    【解决方案2】:

    因为你不在一个函数中:替换

    testArray[1].letter = 'v';
    

    通过

    int main() {
        testArray[1].letter = 'v';
        return 0;
    }
    

    它编译好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多