小编Leo*_*ssi的帖子

u-boot:搬迁

这个是与u-boot相关的基本问题.

为什么u-boot代码会重新定位?

好吧,如果u-boot正在从NOR闪存或引导ROM空间执行,但是如果它从SDRAM运行,为什么它必须再次重新定位呢?

embedded embedded-linux u-boot

13
推荐指数
1
解决办法
4946
查看次数

为什么ARM上有两个向量表地址?

在ARM体系结构中,有一个低向量地址0x0和高向量地址0xFFFF0000.我想知道为什么可能需要两个向量地址?在英特尔微处理器和微控制器中,有一个向量地址.

有2个向量地址有什么特别的理由吗?

arm interrupt

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

没有操作系统的嵌入式系统中的malloc

此查询涉及使用的内存分配malloc.

通常我们所说的是malloc从堆中分配内存.

现在说我有一个普通的嵌入式系统(没有操作系统),我在我的程序中加载了正常的malloc程序.

在这种情况下,从哪里分配内存?

c embedded memory-management

9
推荐指数
2
解决办法
5408
查看次数

printf相关查询

这是一个简单的单行程序,使用printf:

void main()

{
printf("%d%d",printf("Cis"),printf("good"));
}
Run Code Online (Sandbox Code Playgroud)

输出:

goodCis34
Run Code Online (Sandbox Code Playgroud)

如何解释这个输出?

c printf

5
推荐指数
1
解决办法
109
查看次数

sizeof(*ptr)和sizeof(struct)之间的区别

我尝试了以下程序

struct temp{
   int ab;
   int cd;
};

int main(int argc, char **argv)
{
   struct temp *ptr1;
   printf("Sizeof(struct temp)= %d\n", sizeof(struct temp));
   printf("Sizeof(*ptr1)= %d\n", sizeof(*ptr1));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

产量

Sizeof(struct temp)= 8
Sizeof(*ptr1)= 8
Run Code Online (Sandbox Code Playgroud)

在Linux中,我在很多地方都观察到了它的用法sizeof(*pointer).如果两者相同,为什么sizeof(*pointer)用?

c sizeof

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

C中的递增运算符

我尝试了以下代码段:

void main()
{
    int x = 1,y = 1,z = 1;
    ++x || ++y && ++z;
    printf("x = %d\ny = %d\nz = %d\n",x,y,z);
}
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

x = 2
y = 2
z = 2
Run Code Online (Sandbox Code Playgroud)

但我得到的输出:

x = 2
y = 1
z = 1
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

c

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

在Linux中使用Offsetof

我正在研究在给定结构中如何找到特定变量的偏移量.

我尝试了以下程序.

struct info{
char a;
int b;
char c;
int d;
};

struct info myinfo;

int main(int argc, char **argv)
{
struct info *ptr = &myinfo;
unsigned int offset;

offset = (unsigned int) &((struct info *) 0)->d;
printf("Offset = %d\n",offset);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道这条线的offset = (unsigned int) &((struct info *) 0)->d工作原理.由于解除引用0,我很困惑.

c linux

3
推荐指数
1
解决办法
877
查看次数

strcpy:实现方法

我正在经历一个可能的库函数实现方法strcpy.它是 :

void strcpy(char *src, char *dest)
{
while (*dest++ = *src++)
            ;
}
Run Code Online (Sandbox Code Playgroud)

如果没有检查,这怎么可能工作'\0'

c string

3
推荐指数
1
解决办法
4182
查看次数

查询与C中的free()相关

如果您尝试释放未使用的内存,会发生什么malloc/calloc

这就是我的意思:

void main()
{
int temp = 0;
int *ptr = &temp;
free(ptr);
}
Run Code Online (Sandbox Code Playgroud)

我以为free()会返回一些错误代码,但free()没有返回值.

c free

3
推荐指数
1
解决办法
210
查看次数

Android:R类停止生成

我是android编程的新手.我正在从Commsware教程做教程,准确的T3教程,在此期间我清理了项目.之后,R类文件已停止生成.

我删除了该项目,看起来同样的错误正在传播到我正在创建的其他新项目.

此错误也将出现在新创建的项目中.

我尝试了stackoverflow中的所有解决方案,如:清理项目,在构建路径中选择android版本,删除我的工作区,新安装eclipse等.

另一个令人生畏的事情是我的res文件夹没有显示任何错误,我的xml文件不包含任何大写字母.

它必定是一些愚蠢的错误导致了这个?

eclipse android r.java-file

3
推荐指数
1
解决办法
2803
查看次数

打包两个8位值

我遇到了一个简单的问题.这是代码:

int main(int argc, char **argv)
{
  char buf[2] = {0xd, 0x1f};
  unsigned int a;

  a = ((buf[1] << 8) & 0xFF00) | buf[0];
  printf("%d\n",a);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

a我需要的值是0x1FD(509)但是当我运行上面的程序时,输出a0x1F0D(7949).

我怎样才能做到这一点?

编辑:好的,让我澄清一下.我正在做一个项目,我收到代码片段中显示的数据.为了简化我已将它们声明为本地.主要的是我希望将数据解释为0x1FD(509).

c bytearray type-conversion

2
推荐指数
1
解决办法
124
查看次数