0

ICC 11.1 を使用して ia64 マシンで作業しています。次のプログラムはうまくコンパイルされます。

#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)

誰かが私に理由を説明できますか? またはもっと重要なこと: 2 番目のコード例もコンパイルできるように、この問題を回避するにはどうすればよいですか?

4

1 に答える 1

0

まあ、それは簡単です:あなたは( POSIXv6 / SUSv3のように)宣言されることになっている<limits.h>場所を含めるのを忘れました。PTHREAD_STACK_MIN

そして、エラーから、 C++モードでエラーが発生しない理由<iostream>も内部的に含まれていると結論付けることができます。<limits.h>

于 2010-06-30T11:09:37.443 に答える