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)

谁能向我解释为什么?或者更重要的是:我如何才能解决这个问题,以便第二个代码示例也能编译?

4

1 回答 1

0

好吧,这很容易:您忘记包含应该声明<limits.h>的位置(根据POSIXv6/SUSv3)。PTHREAD_STACK_MIN

从错误中可以得出结论,<iostream>内部还包括<limits.h>为什么在 C++ 模式下错误不会发生。

于 2010-06-30T11:09:37.443 回答