相关疑难解决方法(0)

可以使用const变量来声明C中数组的大小吗?

为什么以下代码会抛出错误?

const int a = 5;
int b[a]={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

而且当我尝试编译没有"const"关键字的上述代码时,我得到了同样的错误:

int a = 5; 
int b[a]={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我在这里做的错误是什么?

还有另一个问题:什么时候常量被代码中的实际值替换,即如果我声明一个变量说:const int x = 5; 我知道在RAM中没有为变量x分配内存,但是ROM中的常量变量区域保持值5,并且x在代码中出现x的地方简单地替换为值5.但这什么时候发生的?编译时间?启动时间?预处理时间?

PS:我说的是嵌入式C(在微控制器上运行等),而不是在桌面上运行的C. 因此嵌入式系统必然会有一个ROM(Flash,EEPROM ......).那会发生什么?

c arrays const

37
推荐指数
3
解决办法
3万
查看次数

C中文件范围的可变修改数组

我有一些像这样的代码:

static int a = 6;
static int b = 3;

static int Hello[a][b] =
{
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3},
    { 1,2,3}
};
Run Code Online (Sandbox Code Playgroud)

但是当我编译它时,它说错误:

在文件范围内可变地修改了"Hello"

怎么会发生这种情况?我该怎么办呢?

c arrays static

30
推荐指数
2
解决办法
6万
查看次数

为什么我得到一个关于初始化器不是常量的错误?

我使用以下代码.

const int X_ORIGIN = 1233086;             
const int Y_ORIGIN = -4728071;              
const int Z_ORIGIN = 4085704;
const int xyzOrigin[NUM_DIMENSIONS] = {X_ORIGIN, Y_ORIGIN, Z_ORIGIN};
Run Code Online (Sandbox Code Playgroud)

当我编译它时,GCC给我以下错误.

Transformations.h:16:1:错误:初始化元素不是常量

那是什么意思?我该如何修复我的代码?

c const initializer

10
推荐指数
3
解决办法
4万
查看次数

C中带有const变量的数组大小

我发现了一个有趣的事实,我不明白它是如何工作的.
以下代码完美无缺.

#include <stdio.h>
 int main(){
  const int size = 10;
  int sampleArray[size];
  typedef char String [size];
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后,我试图只使用具有全局范围的常量变量,并且它仍然很好.

#include <stdio.h>
const int size = 10;
 int main(){
  int sampleArray[size];
  typedef char String [size];
  return 0;
}
Run Code Online (Sandbox Code Playgroud)


但是,如果我将数组的范围也改为全局,我得到以下结果:

错误:在文件范围内修改了'sampleArray'

#include <stdio.h>
const int size = 10;
int sampleArray[size];
typedef char String [size];
 int main(){
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我没有得到它!如果我将ex替换为const变量.以#define它会好起来为好.
我知道#define变量是预处理的,据我所知,const变量只是只读的.但究竟什么才能成为全球范围的?

我不明白第三段代码有什么问题,如果第二段代码还可以.

c arrays scope const

6
推荐指数
1
解决办法
2580
查看次数

标签 统计

c ×4

arrays ×3

const ×3

initializer ×1

scope ×1

static ×1