#include
using namespace std;
int yzs=1;
long long x[yzs];
int main(){
return 0;
}
为什么会编译不过
foo.cc:4:15:error size or array'dh'is no an integral constant-expression
4|long long x[yzs];
^

10 条评论

  • @ 2023-8-17 14:31:10

    那些喊要含在主函数内的是没搞清楚,放在主函数内能够编译通过是因为C语言有动态数组,可以在函数内使用变量(非常量)定义数组大小,而ISO-C++不允许动态数组,只不过g++能够编译通过,但是开启ISO-C++检查的情况下会进行警告。正确的做法是,把表示数组容量的yzs变为常量,例如下面这样

    const int yzs=1;    // 这里也可以使用constexpr
    long long x[yzs];
    int main(){
        return 0;
    }
    
    • @ 2023-1-2 10:08:40
      • 没有头文件
      • @ 2023-1-1 21:45:32

        这是你的源代码:

        #include
        using namespace std;
        int yzs=1;
        long long x[yzs];
        int main(){
        return 0;
        }
        

        有如下问题:

        1.头文件没了

        如果是Vsual C++项目,请添加头文件<iostream>

        如果使用Dev-C++进行编译,请添加头文件<bits/stdc++.h>

        2.数组定义时出现错误

        (1)最重要的,数组大小不对

        编写代码时无法使用大小为1的数组,建议将zxy改为>1的数值

        (2)如果是Visual C++项目,请这样定义数组:

        int *x=new int[zxy]//关键字new是进行动态内存申请,VC++没法使用变量定义数组

        应该这样改:

        # include <iostream>
        using namespace std;
        int zxy=3;
        long long x[zxy]//或者是`int *x=new int[zxy]
        
        int main()
        {
            //其他操作
            return 0;
        }
        
        • @ 2022-12-24 15:07:48

          1.include,应为:

          #include<bits/stdc++.h>
          //或
          #include<iostream>
          

          2.格式,应为:

          int main(){
              int yzs = 1;
              long long x[yzs];
              return 0;
          }
          
          • @ 2022-12-24 15:10:58

            code:

            #include<bits/stdc++.h>
            using namespace std;
            int main(){
                int yzs = 1;
                long long x[yzs];
                return 0;
            }
            
        • @ 2022-12-21 7:46:22

          要放主函数内(我就问一句,你开大小为1的数组用来干嘛)

          • @ 2022-12-21 13:59:49

            啊对

          • @ 2023-1-1 21:48:08

            可以不放在主函数里面,放外面是定义全局变量,所有函数都可以使用.

            (而且放外面同时清零)

          • @ 2023-8-17 14:26:58

            放主函数内是C语言的动态数组,会进行警告:ISO-C++不允许动态数组,但是还是可以创建

        • @ 2022-12-11 11:23:17

          @hisxhst2022 你把int yxs = 1和long long x[yzs]放在主函数内,不然系统编译的时候会找不到yzs image

          • @ 2023-1-30 20:41:58

            不会吧,放在外面是全局变量,哪哪都能用

        • @ 2022-12-9 21:07:22

          @ 数组大小必须是不变量例如:

          #define ARRLEN 1005
          int a[ARRLEN];
          

          或者

          const int ARRLEN=1005;
          int a[ARRLEN];
          
          • @ 2022-12-12 20:22:13

            但是我需要数组x为全局变量

          • @ 2022-12-13 18:04:20

            @ 直接放在主程序里

          • @ 2023-1-1 21:54:55

            只有Visual Studio才那么严苛,Dev-C++没有必要.

        • @ 2022-12-9 16:55:57

          数组大小不能是变量

          • @ 2022-12-8 21:14:34

            你的头文件有问题,改成:

            #include<bits/stdc++.h>

            using namespace std;

            int yzs=1;

            long long x[yzs];

            int main(){

            return 0;

            }

          • @ 2022-12-8 20:43:18

            少了const?

            • 1