私の背景はSwiftとObjective-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
ありません汗:Xcodeで
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などのドキュメントが使用中であることがわかりました。同じ方法。
どのようにすればこの問題を解決できますか?
'changeCounter'は' std :: atomic 'にする必要があることに注意してください。http://en.cppreference.com/w/cpp/atomic/atomic_fetch_add現在のC++では' volatile'とは関係ありませんマルチスレッド化。 –
@RichardCritten私は 'atomic'型をチェックします。このファイルはもともとAppleによって書かれたもので、 'volatile'はそこから始まったのです。 –
ajbmdi
@RichardCritten 'changeCounter'を' std :: atomic 'に変更しましたが、このエラーが発生しました:"タイプ 'std :: atomic '(別名 '')のメンバサブオブジェクトをコピーすると、コンストラクタ" –
ajbmdi