请教关于GCC - AVR的编译问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:29:18
用了几天写了一个小东西,之前一直都是用VC++ .NET 测试,现在测试都通过了准备开始移植到GCC-AVR时出现了严重问题:
1.编译器警告
buffer.h:12: warning: alignment of 'Buffer::_ZTV6Buffer' is greater than maximum object file alignment. Using 1
原因未知......
2.编译器警告
Queue.h:20: warning: ignoring packed attribute on unpacked non-POD field `CommandPackage Queue::cmd[1]'
估计原因是在类中包含了一个其他类型的数组,请高手指点.....
3.仿真器提示
AVR Simulator: Excessive stack overflow, stop sim
原因未知......

基本情况:
使用的是 AVR Studio 4.12 sp4
GCCAVR 20060421
单片机是 AVR-mega16

程序使用了大量的自定义的类,而且使用了一定数量的结构体数组.
但手工估算实际被实例化的类和结构体总数应远小于总RAM数量.

代码写了N天了现在移植不了,请各位大虾帮帮忙.
如果有答案我会再追分的.

看你的说明也不能明白是因为什么原因引起,
但是从WINDOWS将程序移植到UNIX下应注意不要把
CPP文件和H文件直接拷贝过去,因为.NET的文件格式
可能与UNIX下CPP文件和H文件的格式不一致,建议你
将CPP文件和H文件在.NET里面另存为纯文本文件,
然后在UNIX环境下编译.
另外,如果你要跨平台使用CPP文件,尽量使用标准的
C和CPP库和数据结构,不要使用WINDOWS的宏和其数据
结构.
最后,我不知道你为什么要在.NET的环境下写了再移植,
如果你最终使用环境是UNIX,那么你就可以直接在UNIX
环境下编码和编译,关于UNIX下的编码工具一般使用
VI,和GCC或者G++,有关VI的使用可以从网上下载...

变量定义不对,你再检查下?