能力值:
( LV13,RANK:260 )
|
-
-
2 楼
不懂 望详解。。。。。。lz。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
|
能力值:
( LV15,RANK:520 )
|
-
-
4 楼
...就这个?多看点书
|
能力值:
( LV15,RANK:520 )
|
-
-
5 楼
哥,就是为了在编译窗口那里打出提示信息,。。。。。
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
没什么大用,只是如果代码编译时有错或警告,双击编译输出对应的错误或警告条目可以跳转到对应的源代码行,如果没有错误,又想在源代码中做个提示标记,这个宏就有用。我有时有些想法暂时不实现或多部分代码要配合时,用它做一标记,以免时间长了自己忘记了,而且关键是可以快速定位相应的代码位置。
|
能力值:
( LV15,RANK:670 )
|
-
-
7 楼
有没有用. 要看写得怎么样.
我就写了个简单的
#if !defined(_LWLIB_H) #define _LWLIB_H
#include <windows.h>
#if defined(_DEBUG)|defined(DEBUG) #define DBGOUTPUT DebugPrint #define DBGPRINT(pszName) {int retValue; \ __asm{ mov retValue, eax} \ int error_code = GetLastError(); \ DebugPrint("%s", "... start ..."); \ DebugPrint("call %s", pszName); \ DebugPrint("return value(hex): %0X", retValue); \ DebugPrint("error code(hex): %0X", error_code); \ DebugPrint("from: %s", __FUNCTION__); \ DebugPrint("file: %s", __FILE__); \ DebugPrint("line(dec): %d", __LINE__); \ DebugPrint("%s", "... end ...");} #else #define DBGPRINT #define DBGOUTPUT #endif
__inline void WINAPI DebugPrint(LPSTR pszFormat, ...) { CHAR szBuffer[10240]; ZeroMemory(szBuffer, sizeof(szBuffer)); va_list arg_list; va_start(arg_list, pszFormat); vsprintf_s(szBuffer, _countof(szBuffer), pszFormat, arg_list); va_end(arg_list); OutputDebugStringA(szBuffer); }
#endif // end of _LWLIB_H
用的时候,先把头文件包含进来:
1.
CreateFile(...);
DBGPRINT("CreateFile"); // 监视上面函数的返回值
2.
myFunc()
{
DBGOUTPUT("Enter myFunc"); // 写点注释什么的...
}
在脱离IDE调试时.可以直接使用 dbgview 查看调试输出.
|
能力值:
( LV5,RANK:70 )
|
-
-
8 楼
来看看
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
这是哪和哪啊?
|
能力值:
( LV15,RANK:670 )
|
-
-
10 楼
我明白你要表达的了.
我面壁去.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
这么漂亮的代码,好生羡慕。。。但我一点都看不懂啊。。
向大牛学习。。
|
能力值:
( LV15,RANK:3306 )
|
-
-
12 楼
eclipse //TODO 很强大
|
能力值:
( LV3,RANK:20 )
|
-
-
13 楼
再解释一下吧:
1.这个宏就是利用#pragma message输出编译信息。
2.如果仅是输出编译信息,可以直接#pragma message("这只是一个空函数,有时间实现它!"),但此时编译输出中不包括输出这个信息的文件名和行号。
3.这个宏的主要目的是利用__FILE__和__LINE__这两个编译器译预定义宏和#宏操作符拼出一个格式如下的串:
文件名(行号) 用户信息
这样可以标识出信息输出者的位置,更主要的是在VS的IDE中双击这一行可以直接跳到使用宏输出信息的所文件的所在行,就像编译时如果出错了,双击出错信息可以跳到出错位置一样。
4. “//TODO:”条目在VS中也支持(还可以自定义条目),它会出现在VS IDE的TASK LIST中,但仅限于打开的源文件,不知eclipse是否是这样。而且“//TODO:”只存在于IDE环境中,尽管都有标记代码的作用,但它和编译输出不是一个概念。
|
能力值:
( LV15,RANK:670 )
|
-
-
14 楼
eclipse 我不知道. CodeBlocks 可以输出整个项目的 todo. VS 只能是当前文件的.
|
能力值:
( LV15,RANK:3306 )
|
-
-
15 楼
eclipse也是可以查看整个项目的todo
|
能力值:
( LV15,RANK:670 )
|
-
-
16 楼
#define _TOSTRING(anything) #anything
#define TOSTRING(anything) _TOSTRING(anything)
#define LINEINFO (__LINE__):
#define _TODO(todo_what) __FILE__ TOSTRING(LINEINFO) TOSTRING(todo_what)
#define TODO(todo) message(_TODO(todo))
用的时候:
#pragma TODO(xxx) // xxx 可以是数字, 字符串什么都可以, 不需要加引号.直接写内容就行了.
只能在编译期有效果.而且不能用得太多.否则自己给自己找麻烦.
|
能力值:
( LV15,RANK:520 )
|
-
-
17 楼
直接参考天书夜读,定义一个DBGPRINT宏,照样有效
|
|
|