ICC 11.1 имеет странное поведение относительно PTHREADS на ia64 - PullRequest
0 голосов
/ 30 июня 2010

Я работаю на ia64-машине, используя ICC 11.1. Следующая программа прекрасно компилируется:

#include <pthread.h>
#include <iostream>
using namespace std;
int main()
{
    cout << PTHREAD_STACK_MIN << '\n';
    return 0;
}

Когда я компилирую это с icc test.cpp -o test

НО, когда я изменяю содержимое файла на:

#include <pthread.h>
#include <stdio.h>
int main()
{
    printf("%d\n", PTHREAD_STACK_MIN);
    return 0;
}

Я вдруг получаю:

icc -c test.cpp -o test.o test.cpp (6): ошибка: идентификатор "PTHREAD_STACK_MIN" не определено printf ("% d \ n", PTHREAD_STACK_MIN); ^

сборка прервана для test.cpp (код 2)

Может кто-нибудь объяснить мне, почему? Или, что более важно: как я могу обойти эту проблему, чтобы второй пример кода также компилировался?

1 Ответ

0 голосов
/ 30 июня 2010

Ну, это просто: вы забыли включить <limits.h> там, где должен быть объявлен PTHREAD_STACK_MIN (согласно POSIXv6 / SUSv3 ).

И из ошибки одинМожно сделать вывод, что <iostream> внутренне также включает <limits.h>, почему в режиме C ++ ошибка не происходит.

...