LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1517|回复: 5

#ifdef 的问题

[复制链接]
发表于 2006-5-16 10:26:01 | 显示全部楼层 |阅读模式
有三个文件
main.cpp
foo.h
foo.cpp

main.cpp中用
#ifdef __FOO__
#include "foo.h"
#endif

#ifdef __FOO__
foo();
#endif

在Makefile中-D__FOO__时,编译和运行都正常
没有-D__FOO__时,链接的时候报"undefined reference to foo()"

既然#ifdef是条件编译,为什么没有define __FOO__时还有reference to foo()呢?
我用笨办法把__FOO__有关的#ifdef都注释掉后就编译运行正常,想不通,各位指点一下。
发表于 2006-5-16 11:20:00 | 显示全部楼层
我这里完全正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-16 11:42:07 | 显示全部楼层
我这里完全不正常
还有,在foo.h和foo.cpp中有没有必要再用#ifdef呢?
回复 支持 反对

使用道具 举报

发表于 2006-5-16 13:15:01 | 显示全部楼层
一般放在.h文件中就行了。
回复 支持 反对

使用道具 举报

发表于 2006-5-16 13:42:58 | 显示全部楼层
肯定别的地方错掉了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-16 17:26:36 | 显示全部楼层
别的地方应该没有错,因为我把要用到foo()的11个cpp文件中用#ifdef的地方都注释掉后,就完全正常了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表