- 论坛徽章:
- 0
|
诸位: 为何我的函数返回后, 值改变了? 情况说明如下:
-----datatype.h-------
....
typedef struct _SEEDchanRecord {
short flag;
/*flag = 0 , reader < writer
**flag = 1 , reader >=writer
*/
time_t lastWriteTime;
uint32_t reader; /*read pointer*/
uint32_t writer; /*write pointer*/
char *data;
/* struct SEEDchanRecord_t * next;*/
} SEEDchanRecord_t;
typedef struct _gangZhenData {
int i; /* for example */
} gangZhenData_t;
typedef union _dataBuffer {
SEEDchanRecord_t *dataChanRecord;
#define dataRecordArray dataBuffer.dataChanRecord
gangZhenData_t *dataPacket;
#define dataPacketArray dataBuffer.dataPacket;
} dataBuffer_t;
|
----buffer.c----
static dataBuffer_t dataBuffer;
char*
readLissBuffer(int i) {
/* In this case, you should call GetDataReady first manually.
** Otherwise, you may get a race in some time.
*/
return (char*)(dataRecordArray[i].data+ dataRecordArray[i].reader);
} |
我在另一个文件中调用readLissBuffer函数, 获得的返回值改变了(在函数内计算还是正确的)
诸位, 有何高见?
[ 本帖最后由 superline007 于 2008-9-3 08:49 编辑 ] |
|