내 배경이 신속하고 객관적인 -C로되어 있으므로 작업중인 C++ 파일에서이 동작에 혼란스러워집니다. . 모든std :: atomic_fetch_add를 호출하는 중 ''atomic_fetch_add '호출에 대한 일치하는 함수가 없습니다.
첫째,이 라인은 :
'OSAtomicIncrement32Barrier' is deprecated: first deprecated in iOS 10.0 - Use std::atomic_fetch_add() from <atomic> instead
없음 땀 : 엑스 코드에서
OSAtomicIncrement32Barrier(&changeCounter);
는 경고를 표시합니다. 나는 <atomic>
을 가져으로 라인을 교체 :
std::atomic_fetch_add(&changeCounter, 1);
하지만 지금은 완전한 오류 얻을 :
No matching function for call to 'atomic_fetch_add'
changeCounter
따라서 정의 : 나는 또한 시도했다
volatile int32_t changeCounter = 0;
을 그것은 volatile int
입니다. 그러나 변화는 없습니다.
코드 완성을 사용하여 해당 함수를 가져오고 올바른 인수를 넣을 수 있음을 알 수 있습니다. 설명서 (예 : here)는 사용중인 atomic_fetch_add
을 보여 주며이를 수행하는 것으로 나타납니다 같은 방식으로.
이 문제를 해결하는 방법은 무엇입니까?
'changeCounter'는'std :: atomic'이 필요합니다. http://en.cppreference.com/w/cpp/atomic/atomic_fetch_add 현재 C++에서'volatile'은 아무 관계가 없습니다. 멀티 스레딩. –
@RichardCritten '원자'유형을 확인해 볼게요. 이 파일은 원래 Apple에 의해 작성되었으므로, '휘발성 (volatile)'은 거기서부터 시작되었습니다. –
ajbmdi
@RichardCritten'changeCounter'를'std :: atomic'으로 바꿨습니다. 이제는 'std :: atomic '(일명 ''유형의 구성원 복사) 호출이 삭제되었습니다. 건설자" –
ajbmdi