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

后端 未结 2 1424
清酒与你
清酒与你 2020-12-30 08:33

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 -lpth         


        
相关标签:
2条回答
  • 2020-12-30 09:13

    Seems like you posted a new question after you realized that you were dealing with a simpler problem related to size_t. I am glad that you did.

    Anyways, You have a .c source file, and most of the code looks as per C standards, except that #include <iostream> and using namespace std;

    C equivalent for the built-in functions of C++ standard #include<iostream> can be availed through #include<stdio.h>

    1. Replace #include <iostream> with #include <stdio.h>, delete using namespace std;
    2. With #include <iostream> taken off, you would need a C standard alternative for cout << endl;, which can be done by printf("\n"); or putchar('\n');
      Out of the two options, printf("\n"); works the faster as I observed.

      When used printf("\n"); in the code above in place of cout<<endl;

      $ time ./thread.exe
      1 2 3 4 5 6 7 8 9 10
      
      real    0m0.031s
      user    0m0.030s
      sys     0m0.030s
      

      When used putchar('\n'); in the code above in place of cout<<endl;

      $ time ./thread.exe
      1 2 3 4 5 6 7 8 9 10
      
      real    0m0.047s
      user    0m0.030s
      sys     0m0.030s
      

    Compiled with Cygwin gcc (GCC) 4.8.3 version. results averaged over 10 samples. (Took me 15 mins)

    0 讨论(0)
  • 2020-12-30 09:30

    Neither <iostream> nor <iostream.h> are standard C header files. Your code is meant to be C++, where <iostream> is a valid header. Use 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 (eg. gcc -std=c99)

    0 讨论(0)
提交回复
热议问题