我是c ++和RTOS的新人,所以不要怪我或嘲笑我
我有:function sort_trends_by_hostid($a, $b) {
if ( $a->hostid == $b->hostid ) {
return 0;
}
return ($a->hostid < $b->hostid) ? -1 : 1;
}
usort($trends, 'sort_trends_by_hostid');
和someOtherClass:
typedef struct
{
//... 10 uint8 and 2 enums
} tStruct1;
typedef struct
{
//... slightly different, but completely different enums
} tStruct2;
class someClass
{
private:
struct
{
//...
union
{
tStruct1 s1;
tStruct2 s2;
} data;
} node[10];
//...
public:
unsigned int length;
tStruct1 Get1(void);
tStruct2 Get2(void);
//...
}
tStruct1 someClass::Get1(void)
{
//...
length--;
return node[length].data.s1;
}
tStruct2 someClass::Get2(void)
{
//...
length--;
return node[length].data.s2;
}
这很好用:
someClass * inst1 = new someClass();
和此:
inst1->Get1(void); //useless...
将inst1移动到其他地方。在分支到函数之前发生了3个指令,堆栈指针递减了0x14(sizeof结构元素可能是0x12 + alignment - &gt;我认为它没问题),然后递增。功能本身似乎工作正常。返回值是一些未初始化的值。
tStruct1 something = inst1->Get1(void);
也很好。
这两个调用是从不同的线程完成的。无论如何,我打算把这个班级扔掉,因为项目改变了,但我想知道我做错了什么。