- #include "definetest.h"
- #include <stdlib.h>
- #include <iostream>
- using namespace std;
- definetest::definetest(void)
- {
- }
- definetest::~definetest(void)
- {
- }
- void definetest::todefine(){
- #define TESTDEFINE
- }
- void definetest::test()
- {
- #ifndef TESTDEFINE
- cout<<"not defined"<<endl;
- #else
- cout<<"have defined"<<endl;
- #endif
代码是这样的:
问题如下:
如果不执行todefine而直接的执行test,那么最后的输出是not defined 还是 have defined???
80%的人肯定会说是not defined,但是如果实际的跑一下就会发现是:hava defined.
为什么事hava defined呢?
这个涉及到C/C++的编译过程: