小编use*_*269的帖子

g ++:数组绑定不是整数常量

有了代码,

const double rotationStep = 0.001;
const int N = 2*int(M_PI/rotationStep) + 3;

static unsigned int counts[N];
Run Code Online (Sandbox Code Playgroud)

g++ 给出错误:

数组绑定在»]«标记之前不是整数常量

我正在使用g++/ gcc版本4.6.1

谁能告诉我为什么g++抱怨这个表达?

c++ g++ constants

9
推荐指数
1
解决办法
1万
查看次数

GCC多次声明全局变量时没有警告或错误

假设以下代码:

AC:

#include <stdio.h>

int a;
int func();

int main(int argc, char **argv) {
a = 7;
int a2 = func();
printf("a is %d, a2 is %d\n", a, a2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

和bc:

int a;

int func()
{
a = 9;
return a;
}
Run Code Online (Sandbox Code Playgroud)

使用g++ a.c b.c -Wall -O0它编译时会产生链接错误,如预期的那样.但是,调用gcc a.c b.c -Wall -O0它时不会产生警告而且没有错误!

输出a is 9, a2 is 9顺便说一下.

gcc版本5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.4)

GCC为什么允许这样做?我对这种行为感到惊讶.如果在声明时初始化变量,那么链接也将失败并使用GCC.

c gcc

4
推荐指数
1
解决办法
526
查看次数

标签 统计

c ×1

c++ ×1

constants ×1

g++ ×1

gcc ×1