xcodeでc11スレッドの例をセットアップしようとしています...しかし、ここで説明されているマクロについては満足していませんが、threads.hヘッダーがないようです:
http://www.open-std. org/jtc1/sc22/wg14/www/docs/n1570.pdf
__STDC_NO_THREADS__実装が <threads.h> ヘッダーをサポートしていないことを示すための整数定数 1。
C11 のスレッド機能をサポートしているものはほとんどないように見えます...多分私はそれを clang に入れようとします...
私のマシン(ubuntu / Linuxのv. 3.2)のclangでは、その機能テストマクロが定義されていません。その機能のサポートには、通常コンパイラには付属していない C ライブラリでのサポートが必要です。したがって、基本的に clang の答えは gcc の場合と大差ありません。通常、同じ C ライブラリ、つまり glibc に基づいて構築されます。gccの答えについては、こちらを参照してください。
不平を言っているわけではあり
threads.h
ませんが、ヘッダーがないようです
C11には2つの仕様があります__STDC_NO_THREADS__
7.26 スレッド
マクロを定義する実装は、__STDC_NO_THREADS__
このヘッダーを提供する必要も、その機能をサポートする必要もありません。C11 N1570 §7.26.1 2
__STDC_NO_THREADS__
<threads.h>
実装がヘッダーをサポートしていないことを示すための整数定数 1 。C11 N1570 §6.10.8.3 1
§7.26.1 2によると:
#ifdef __STDC_NO_THREADS__
#error "No threading support"
#else
#include <threads.h>
#endif
§6.10.8.3:
#if defined(__STDC_NO_THREADS) && __STDC_NO_THREADS__ == 1
#error "No threading support"
#else
#include <threads.h>
#endif
// Certainly this can be simplified to
#if defined(__STDC_NO_THREADS) && __STDC_NO_THREADS__
または per #if で使用される未定義の定数の値は何ですか? に
#if __STDC_NO_THREADS__
これは OP のコードと一致するため、準拠した C11 コンパイラで動作すると予想していました。
それでも、OPには@Kevinごとの解決策があるようです。タイプミスのように見えるため、これは誤った解決策である可能性があります (末尾がありません)。__STDC_NO_THREADS
__
#if !defined(__STDC_NO_THREADS) || __STDC_NO_THREADS__
C++11 では、したいので#include <thread>
はなく、threads.h
#include <iostream>
#include <thread>
void fun() { std::cout << "fun!" << std::endl; }
int main() {
std::thread t ( fun );
t.join ();
return 0;
}