ccs3.3 for OMAP3530 问题
编译器ccs3.3
操作系统nucleus
处理器OMAP3530
程序编译后load symbol时候报错,程序不能下载,经排查,发现类成员里如果有某静态类成员,
或者静态结构,而该类或者结构含有构造函数,就会报这样的错误,只要去掉构造函数,程序就
可以下载。
下面是一个测试程序,去掉构造函数后就可以下载,现在这样就不行。
请牛人指点,谢谢啦。
class CTest
{
public:
CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out
int* m_pTest;
};
class CComEntity
{
private:
static CTest s_value[10];
}
CTest CComEntity::s_value[10];
[解决办法]
CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out
int* m_pTest;
---》这里的m_pTest是一个指向整形数据的指针变量,你构造函数中应该让这个指针指向某个整形变量才对啊,怎么把0赋值给m_pTest,我猜测楼主的意思应该是m_pTest=NULL才对吧,楼主可以试一下,是否可以麻烦告知,先谢谢了。
[解决办法]
和楼上观点有点不同哈。
class CTest
{
public:
CTest(){m_pTest=0;}; // After delete t he structure function ,problem will die out
int* m_pTest;
};
“下面是一个测试程序,去掉构造函数后就可以下载,现在这样就不行。”
楼主,如果加上了这个构造函数,则类CTest不具备默认构造函数。
s_value数组,你又没显示初始化,那么编译器就迷茫了,它不知道如何去初始化这个数组。
[解决办法]
而如果楼主去掉了这个构造函数
则编译器在编译时,发现该类一个构造函数都没有
则编译器会自动为类CTest生成一个默认的构造函数,则可以通得过。
因为s_value数组,编译器可以通过调用CTest类的默认构造函数去初始化
[解决办法]
楼主如果非要定义一个自己的构造函数的话,要定义一个默认的构造函数,而不是现在这样。
这个怎么定义,相信楼主去看一下基础c++,楼主应该会的。