我正在使用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)
任何人都可以向我解释原因吗?或者更重要的是:我如何解决这个问题,以便第二个代码示例也可以编译?
答案 0 :(得分:0)
嗯,这很简单:你忘了在<limits.h>
声明PTHREAD_STACK_MIN
的地方<iostream>
。{/ p>}。
从错误中可以得出结论,<limits.h>
内部也包含{{1}}为什么在C ++模式下不会发生错误。