语言陷阱:armcc的Fatal error:0x0ce4

不要问我为什么,反正它就是发生了,我不能保证你的问题和我的情况一样。

今天编译的时候,出现了下列的错误:

Fatal error: Internal fault: 0x0ce4 in ‘xxxx’

xxxx为函数名,如果你在错误上点了的话,会跳转到程序的结尾,反正不在那个函数上(我用emacs,编译出错可以直接跳转岛错误的地方)。根据常识,这又是个不明的错误。我的代码结构大致如下:

继续阅读语言陷阱:armcc的Fatal error:0x0ce4

语言陷阱:C/C++的宏替换

C/C++的宏非常不错,非常强大,我自己用的也非常顺手。自己的代码刚开始写的时候其实到处都是宏,然后根据需要,切换为C++,切换为Java,一会排成一字,一会排成人字。但使用却必须要小心些了,比如下面的语句:

       #define abs(x) (x)<0?0-(x):(x)
       #define rand(x) abs(rand()%x)
       

继续阅读语言陷阱:C/C++的宏替换

语言陷阱:变量声明

前两周太忙了,从上周才稍微缓和些,也正是那段时间,背写了大量的代码,自然免不了错误的。但有些错误,在一定程度上,应该是可以避免的,比如下面的代码:

       int main(int argc, char* argv[]){
int* t = (int*)t;
for (int i = 0; i < 4; i++) {
t[i] = 0;
}
return 0;
}

       

继续阅读语言陷阱:变量声明

语言陷阱:C++继承的转换

起了个很壮观的名字,也就是说,有点招摇撞骗的感觉。我想将这部分做一个系列,但有不想与别的太重合。嗯,这个系列的来源是这样的,平时总有人问我,xxx为什么无法编译通过,明明是对的,有些时候,我也这样问自己。从概念上来说,一些问题是不应该出现的,但却实际出现了,理论和实际总会出现一些冲突的。因此,我希望将一些平时我们不注意的细节记录下来,让我们在出现类似问题的时候可以寻找到答案,减少我们所犯的错误。
目前我电脑还没有安装完开发环境,所以,今天的开始只是一个回忆的开始,从我能记住的开始。改天将代码的实际测试结果和错误结果给出。
在C++中,继承很是强大,我们可以通过继承来扩展类型,但扩展是否有限制呢?先看下面的一组代码:

       void copy(int* a, int* b)
       {
       }

       void copy(byte* a, byte* b)
       {
       }

       class CBase()
       {
       public:
       CBase(){}
       virtual ~CBase(){}
       }

       class Child: public CBase
       {
       public:
       Child(){};
       virtual ~Child(){};
       }
       void copy(CBase** a, CBase** b)
       {
       }

       void main()
       {
       CBase** temp1 = new Child*[10];
       Child** temp2 = new Child*[10];
       copy(temp1, temp2);
       }
       

继续阅读语言陷阱:C++继承的转换