返回信息流我在gcc下编译下面代码可以通过,是不是说明头文件只提供了一个变量、函数等声明的功能(狭义),不会提供和查找库文件相关的功能?
extern int printf (__const char *__restrict __format, ...);
int main()
{
int i=2;
printf("Thank you\n");
}
但是我又执行了下面的代码,却编译不通过,这可能涉及到编译连接之类的问题吧,小弟菜鸟,那位大牛给俺解释一下,先谢了。。。。。
extern int printf (__const char *__restrict __format, ...);
extern void assert(int test); //assert的原型没有错吧?
int main()
{
int i=1;
assert(i==1);
printf("Thank you\n");
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #32325同步于 2009/11/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教头文件相关的问题
kanjunbao
2009/11/28镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
确实很奇怪,我的gcc-4.3报的错是
error: syntax error before "int"
期待大牛解答
不过更奇怪的是你为什么要这样用呢?直接#include <assert.h>不就可以了吗!
【 在 kanjunbao 的大作中提到: 】
: 我在gcc下编译下面代码可以通过,是不是说明头文件只提供了一个变量、函数等声明的功能(狭义),不会提供和查找库文件相关的功能?
: extern int printf (__const char *__restrict __format, ...);
: int main()
: ...................
因为assert 是define
#define assert(e) ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
恍然大悟,茅塞顿开!
【 在 SuK 的大作中提到: 】
: 因为assert 是define
: #define assert(e) ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))