I’m working on a ia64-machine using ICC 11.1. The following program compiles nicely:
#include <pthread.h>
#include <iostream>
using namespace std;
int main()
{
cout << PTHREAD_STACK_MIN << '\n';
return 0;
}
When I compile it with icc test.cpp -o test
BUT when I change the contents of the file to to:
#include <pthread.h>
#include <stdio.h>
int main()
{
printf("%d\n", PTHREAD_STACK_MIN);
return 0;
}
I suddenly get:
icc -c test.cpp -o test.o test.cpp(6):
error: identifier “PTHREAD_STACK_MIN”
is undefined
printf(“%d\n”, PTHREAD_STACK_MIN);
^compilation aborted for test.cpp (code
2)
Can anyone explain to me why? Or more importantly: how I can work around this issue so that the second code example will also compile?
Well, that’s easy: you forgot to include
<limits.h>where thePTHREAD_STACK_MINis supposed to be declared (as per POSIXv6/SUSv3).And from the error one can conclude that
<iostream>internally also includes the<limits.h>why in C++ mode the error doesn’t happen.