首页
社区
课程
招聘
[求助]VC 有这样的编译吗? [不知道怎么描述.具体内详]
发表于: 2008-7-13 17:26 5230

[求助]VC 有这样的编译吗? [不知道怎么描述.具体内详]

2008-7-13 17:26
5230

经过各位的帮助..终于弄好了一个 多参数的 OutputDebugString

并且是只在debug下.才输出信息的

但是.在release 中版本中..虽然我没有去 OutputDebugStringA

但是.写我的调试信息还是加载在里面..

比如..我在程序里面 写

debug_str("这里是输出的调试信息");

虽然 在release 中.并不会用 OutputDebugStringA 输出 这个信息

但是.这个信息却编译到生成的  exe 了...




不知道有没有办法..让编译器.在 release  版本中..

让 debug_str("这里是输出的调试信息"); 这句根本就不编译到exe 里面去呢?



void debug_str(char * formatstr,...)
{
        #ifdef DEBUG

        va_list argptr;
        va_start(argptr, formatstr);
        char buf[4048];
        wvsprintfA(buf,formatstr,argptr);
        OutputDebugStringA(buf);
       
        #endif
}

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
#define debug_str ((void)0)
2008-7-14 01:47
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上的这位兄弟啊...可否解释一下这句的意思啊?

把 这个函数定义成空函数?
2008-7-14 01:59
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
搞定...谢谢!!!

咋都这么厉害呢!!
2008-7-14 02:05
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
不客气,助人为乐,给你一个比较完整的(我直接平时用的代码块)

#define _DBG
#ifdef _DBG
        __inline VOID DbgPrintA(LPCSTR ptzFormat, ...)
        {
                va_list vlArgs;
                CHAR tzText[1024];
                va_start(vlArgs, ptzFormat);
                wvsprintfA(tzText, ptzFormat, vlArgs);
                OutputDebugStringA(tzText);
                va_end(vlArgs);
        }
        __inline VOID DbgPrintW(LPCWSTR ptzFormat, ...)
        {
                va_list vlArgs;
                WCHAR tzText[1024];
                va_start(vlArgs, ptzFormat);
                wvsprintfW(tzText, ptzFormat, vlArgs);
                OutputDebugStringW(tzText);
                va_end(vlArgs);
        }
        #ifdef _UNICODE
                #define DbgPrint        DbgPrintW
        #else
                #define DbgPrint        DbgPrintA
        #endif
#else // DbgPrint
        #if _MSC_VER > 1200
                #define DbgPrintA                                (__noop)
                #define DbgPrintW                                (__noop)
                #define DbgPrint                                (__noop)
        else
                #define DbgPrintA                                ((VOID) (0))
                #define DbgPrintW                                ((VOID) (0))
                #define DbgPrint                                ((VOID) (0))
        #endif
#endif // DbgPrint

解释一下,ASCII和UNICODE都存在,对于VC6以上版本,使用库函数__noop(否则,会有 4353警告),否则 用 #pragma warning(disable:4353) 关掉警告
2008-7-15 14:07
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哈哈.谢谢!!!

果然是二个版本的函数啊..而且..还支持高版本..厉害厉害!!

真是很感谢你的回复!!  如果能结识您老.真是太为荣幸了!
2008-7-15 14:12
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
希望您老发个邮件过来..即时收到!
2008-7-15 14:16
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
我的msn:  ywjheart@sina.com

站内邮件发不了
2008-7-15 14:57
0
游客
登录 | 注册 方可回帖
返回
//