On 15.05.2014 08:01, Siegmar Gross wrote:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
int main (void)
{
#pragma omp parallel default (none)
fprintf (stderr, "Hello!\n");
return EXIT_SUCCESS;
}
I get the following error, when I try to compile the program
on "Solaris 10 Sparc".
tyr OpenMP 116 \gcc -fopenmp omp_fprintf.c
In file included from /usr/include/stdio.h:66:0,
from omp_fprintf.c:38:
omp_fprintf.c: In function 'main':
omp_fprintf.c:45:12: error: '__iob' not specified in enclosing parallel
fprintf (stderr, "Hello!\n");
^
omp_fprintf.c:44:11: error: enclosing parallel
#pragma omp parallel default (none)
^
tyr OpenMP 117
I can solve the problem if I add "shared(__iob)" to "#pragma",
but then the program isn't portable any longer.
tyr OpenMP 118 grep stderr /usr/include/iso/stdio_iso.h
#define stderr (&__iob[2])
#define stderr (&_iob[2])
tyr OpenMP 119
I have a similar problem with Linux and Mac OS X, which need
a different solution, because "stderr" is defined in a different
way.
To get around this, you can add
FILE *fp=stderr;
and use fp instead of stderr, also adding shared(fp).
-leif