gpt4 book ai didi

java - Java C/C++ 转换中的指针

转载 作者:行者123 更新时间:2023-11-28 07:59:26 24 4
gpt4 key购买 nike

我正在尝试将库从 C++ 转换为 Java。我的指针有问题..

C++ 的代码是:

int DECL2 daveSetBit(daveConnection * dc,int area, int DB, int byteAdr, int bitAdr) {
int a=1;
return daveWriteBits(dc, area, DB, 8*byteAdr+bitAdr, 1, &a);
}

daveWriteBits 声明是:

 daveWriteBits(daveConnection * dc,int area, int DB, int start, int len, void * buffer)

如何将其转换为 java?我不知道如何将指针 &a 转换成 java 语言..

public int SetBits(
int area,
int DBnum,
int byteAdr,
int bitAdr) {
int a=1;
return writeBits(area, DBnum, 8*byteAdr+bitAdr, 1, ??? )
}

更新:

我忘了在 Java 中添加部分 WriteBits 函数..

public int writeBits(
int area,
int DBnum,
int start,
int len,
byte[] buffer) {
int errorState = 0;
semaphore.enter();
PDU p1 = new PDU(msgOut, PDUstartOut);

p1.prepareWriteRequest();
p1.addBitVarToWriteRequest(area, DBnum, start, len, buffer);

errorState = exchange(p1);

if (errorState == 0) {
PDU p2 = new PDU(msgIn, PDUstartIn);
p2.setupReceivedPDU();

if (p2.mem[p2.param + 0] == PDU.FUNC_WRITE) {
if (p2.mem[p2.data + 0] == (byte) 0xFF) {
if ((Nodave.Debug & Nodave.DEBUG_CONN) != 0)
System.out.println("writeBytes: success");
semaphore.leave();
return 0;
}
} else {
errorState |= 4096;
}
}
semaphore.leave();
return errorState;
}

最佳答案

由于变量被忽略,我将删除它。

但是如果它没有被忽略你可以起诉

int[] a = { 1 };
writeBits(area, DBnum, 8*byteAdr+bitAdr, 1, a ) ;
// do something with a[0];

关于java - Java C/C++ 转换中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com