Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fatal error: iostream: No such file or directory in compiling C program using GCC

Tags:

c++

c

gcc

g++

Why when I wan to compile the following multi thread merge sorting C program, I receive this error:

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. 

My program:

#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; } 
like image 835
Ebrahim Ghasemi Avatar asked May 30 '15 06:05

Ebrahim Ghasemi


People also ask

How do I fix Iostream No such file or directory?

you have missing iostream. h file in you mingw directory folder placed inside codeblocks/devc++. what you have to do is just download the file from link given below and replace with your previous mingw folder in codeblocks/devc++.

What is fatal error in C++?

In computing, a fatal exception error or fatal error is an error that causes a program to abort and may therefore return the user to the operating system. When this happens, data that the program was processing may be lost.

What does Iostream mean in C++?

iostream: iostream stands for standard input-output stream. This header file contains definitions of objects like cin, cout, cerr, etc. iomanip: iomanip stands for input-output manipulators. The methods declared in these files are used for manipulating streams. This file contains definitions of setw, setprecision, etc.


1 Answers

Neither <iostream> nor <iostream.h> are standard C header files. Your code is meant to be C++, where <iostream> is a valid header. Use a C++ compiler such as clang++ or g++ (and a .cpp file extension) for C++ code.

Alternatively, this program uses mostly constructs that are available in C anyway. It's easy enough to convert the entire program to compile using a C compiler. Simply remove #include <iostream> and using namespace std;, and replace cout << endl; with putchar('\n');... I advise compiling using C99, C11 or C18 (eg. gcc -std=c99, clang -std=c18 etc)

like image 134
autistic Avatar answered Oct 06 '22 08:10

autistic