[解決済み] 致命的なエラー: iostream: GCC を使用して C プログラムをコンパイルする際に、そのようなファイルまたはディレクトリがありません。
2022-03-04 18:28:16
質問
以下のマルチスレッドマージソートCプログラムをコンパイルしようとすると、なぜこのようなエラーが発生するのでしょうか?
ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread
mer.c:4:20: fatal error: iostream: No such file or directory
#include <iostream>
^
compilation terminated.
ap@sharifvm:~/forTHE04a$ gcc -g -Wall -o mer mer.c -lpthread
mer.c:4:22: fatal error: iostream.h: No such file or directory
#include <iostream.h>
^
compilation terminated.
私のプログラム
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <iostream>
using namespace std;
#define N 2 /* # of thread */
int a[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; /* target array */
/* structure for array index
* used to keep low/high end of sub arrays
*/
typedef struct Arr {
int low;
int high;
} ArrayIndex;
void merge(int low, int high)
{
int mid = (low+high)/2;
int left = low;
int right = mid+1;
int b[high-low+1];
int i, cur = 0;
while(left <= mid && right <= high) {
if (a[left] > a[right])
b[cur++] = a[right++];
else
b[cur++] = a[right++];
}
while(left <= mid) b[cur++] = a[left++];
while(right <= high) b[cur++] = a[left++];
for (i = 0; i < (high-low+1) ; i++) a[low+i] = b[i];
}
void * mergesort(void *a)
{
ArrayIndex *pa = (ArrayIndex *)a;
int mid = (pa->low + pa->high)/2;
ArrayIndex aIndex[N];
pthread_t thread[N];
aIndex[0].low = pa->low;
aIndex[0].high = mid;
aIndex[1].low = mid+1;
aIndex[1].high = pa->high;
if (pa->low >= pa->high) return 0;
int i;
for(i = 0; i < N; i++) pthread_create(&thread[i], NULL, mergesort, &aIndex[i]);
for(i = 0; i < N; i++) pthread_join(thread[i], NULL);
merge(pa->low, pa->high);
//pthread_exit(NULL);
return 0;
}
int main()
{
ArrayIndex ai;
ai.low = 0;
ai.high = sizeof(a)/sizeof(a[0])-1;
pthread_t thread;
pthread_create(&thread, NULL, mergesort, &ai);
pthread_join(thread, NULL);
int i;
for (i = 0; i < 10; i++) printf ("%d ", a[i]);
cout << endl;
return 0;
}
解決方法は?
どちらも
<iostream>
また
<iostream.h>
は、C言語の標準的なヘッダーファイルです。あなたのコードはC++であることを意味しています。
<iostream>
は有効なヘッダーです。などのC++コンパイラを使用してください。
clang++
または
g++
(そして
.cpp
ファイル拡張子)でC++のコードに変換します。
また、このプログラムでは、C言語で利用可能なコンストラクトをほとんど使用しています。Cコンパイラを使ってプログラム全体をコンパイルできるように変換するのは簡単です。単に
#include <iostream>
と
using namespace std;
を置き換える。
cout << endl;
を
putchar('\n');
... C99、C11、C18を使ってコンパイルすることをお勧めします(例.
gcc -std=c99
,
clang -std=c18
など)
関連
-
[解決済み】ENOENTが「そのようなファイルやディレクトリはありません」という意味であるのはなぜですか?
-
[解決済み】fatal error: Python.h: そのようなファイルやディレクトリはありません
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】エラー。引数リストに一致するコンストラクタのインスタンスがない
-
[解決済み】gcc/g++:"そのようなファイルやディレクトリはありません"
-
[解決済み] GCC フェイタルエラー:stdio.h: そのようなファイルやディレクトリはありません
-
[解決済み] GCCによるC++プログラムのコンパイル
-
[解決済み] gccコマンドラインを使用して.cファイルから.soファイルをビルドする。
-
[解決済み] エラー "gnu/stubs-32.h: Nachosのソースコードをコンパイルする際に "No such file or directory "というエラーが発生した。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】1つ以上の多重定義されたシンボルが見つかる
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++