10

xcodeでc11スレッドの例をセットアップしようとしています...しかし、ここで説明されているマクロについては満足していませんが、threads.hヘッダーがないようです:
http://www.open-std. org/jtc1/sc22/wg14/www/docs/n1570.pdf

__STDC_NO_THREADS__実装が <threads.h> ヘッダーをサポートしていないことを示すための整数定数 1。

方言を示す エラー表示

4

5 に答える 5

3

C11 のスレッド機能をサポートしているものはほとんどないように見えます...多分私はそれを clang に入れようとします...

于 2013-04-26T21:28:38.423 に答える
1

私のマシン(ubuntu / Linuxのv. 3.2)のclangでは、その機能テストマクロが定義されていません。その機能のサポートには、通常コンパイラには付属していない C ライブラリでのサポートが必要です。したがって、基本的に clang の答えは gcc の場合と大差ありません。通常、同じ C ライブラリ、つまり glibc に基づいて構築されます。gccの答えについては、こちらを参照してください。

于 2013-04-26T21:34:00.417 に答える
0

不平を言っているわけではあり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__
于 2018-04-28T15:28:30.450 に答える
-18

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;
}
于 2013-05-03T17:05:47.277 に答える