对这段C代码的运行结果感觉很诧异!!内存赋初值问题。
unsigned int map_low;
unsigned int map_high;
void clean_map()
{
for(int i=0; i<4; i++)
{
for(int j=0; j<10; j++)
{
map_low =0;
map_high = 0;
}
}
}
void print_map()
{
for(int i=0; i<4; i++)
{
for(int j=0; j<10; j++)
{
mprintf("[%u,%u]\t",map_low ,map_high);
}
mprintf("\n");
}
}
int main()
{
UART_Init(56000);
board_init();
clean_map();
print_map();
while(1)
{
}
}
代码就是这样的,那个 mprintf是往串口输出数据的。
结果很诡异!
在 LGT上面的, avr-gcc {:sweat:} {:lol:}在vc+++6.0上运行没问题
我用mingw4.6.1(跟你的avr-gcc同属gcc家族)编译了一下,完全没问题,全是。 是不是定义的内存区域超出芯片空间了 kevinstar888 发表于 2013-1-26 20:06 static/image/common/back.gif
在vc+++6.0上运行没问题
在vc++6上面楼猪的程序是编译不过去的,你是冒充c++才编译过去的,这不科学。
mingw只要加一个参数-std=c99(楼猪的工程也有这个参数),楼猪的程序就可以按c语言编译通过。 i55x 发表于 2013-1-26 20:07 static/image/common/back.gif
我用mingw4.6.1(跟你的avr-gcc同属gcc家族)编译了一下,完全没问题,全是。 ...
问题找到了 ,应该是栈地址不够用了吧 , LGT的内存只有 512B。 i55x 发表于 2013-1-26 20:14 static/image/common/back.gif
在vc++6上面楼猪的程序是编译不过去的,你是冒充c++才编译过去的,这不科学。
mingw只要加一个参数-std=c ...
我那个就是标准C, 编译没有问题的。 songfei 发表于 2013-1-26 20:24 static/image/common/back.gif
我那个就是标准C, 编译没有问题的。
我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他用的是visual c++,你的代码是编译不过去的,只能改成.cpp文件来编译,毕竟c和c++语法差异很大,不太能说明问题。 i55x 发表于 2013-1-26 20:27 static/image/common/back.gif
我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他 ...
gcc是可以编译的,你估计是没包含头文件吧 ,还有 mprintf这个函数是我自己写的,要改成 printf,
main函数里的无关的删掉,就可以啦。
#include <stdio.h> i55x 发表于 2013-1-26 20:27 static/image/common/back.gif
我跟你用的都是gcc,只不过你的是生成avr代码,我的mingw是生成windows应用程序的,大部分参数一样。
他 ...
windows程序和单片机程序区别就很大了,这个问题最大的区别是 内存大小。
感谢~!~ 哈哈
页:
[1]