我有一個函數,需要一個無符號長整數*,並且需要將它傳遞給一個外部函數庫,該函數需要一個無符號整數*,並且在這個平臺上,unsigned int/long的大小相同。正在打破嚴格的鋸齒規則
void UpdateVar(unsigned long* var) {
// this function will change the value at the address of var
ExternalLibAtomicUpdateVar((unsigned int*)var); // lib atomically updates variable
}
這產生了一個警告,說它打破了嚴格的鋸齒規則。有沒有解決辦法?
謝謝
編輯:我很抱歉不清楚。代碼是一個原子更新,因此繞着庫來存儲它不是一個選項。我可以下降到組裝,但我想用C++來做到這一點。
僅適用於單個對象或long/int數組? – sellibitze
這是一個原子存儲到單個32位內存。 – coderdave