GLOBALS.H
上传用户:lvjun8202
上传日期:2013-04-30
资源大小:797k
文件大小:1k
源码类别:

SNMP编程

开发平台:

C/C++

  1. ////////////////////////////////////////////////////////////////
  2. // Copyright 1998 Paul DiLascia
  3. // If this code works, it was written by Paul DiLascia.
  4. // If not, I don't know who wrote it.
  5. //
  6. #ifndef _GLOBALS_H
  7. #define _GLOBALS_H
  8. #define countof(x) (sizeof(x)/sizeof(x[0]))
  9. #ifdef _DEBUG
  10. //////////////////
  11. // TRACEFN is a macro that lets you generate indented TRACE output so you
  12. // can see the call stack. To use it:
  13. //
  14. // SomeFn(...)
  15. // {
  16. // TRACEFN("Entering SomeFn...n");
  17. // .
  18. // .
  19. // }
  20. //
  21. // Now all trace output after TRACEFN will be indented one space, until SomeFn
  22. // returns. You can put TRACEFN in multiple functions to see indented trace
  23. // output. For an example of this, see the HOOK sample program.
  24. //
  25. // NOTE: YOU MUST NOT USE TRACEFN IN A ONE-LINE IF STATEMENT!
  26. // This will fail:
  27. //
  28. // if (foo)
  29. //    TRACEFN(...)
  30. //
  31. // Instead, you must enclose the TRACE in squiggle-brackets
  32. //
  33. // if (foo) {
  34. // TRACEFN(...)
  35. // }
  36. //
  37. #define TRACEFN CTraceFn __fooble; TRACE
  38. //
  39. // This class implements TRACEFN. Don't ever use directly!
  40. //
  41. class CTraceFn {
  42. private:
  43. static int nIndent; // current indent level
  44. friend void AFX_CDECL AfxTrace(LPCTSTR lpszFormat, ...);
  45. public:
  46. CTraceFn()  { nIndent++; } // constructor bumps indent
  47. ~CTraceFn() { nIndent--; } // destructor restores it
  48. };
  49. #else // NOT _DEBUG
  50. #define TRACEFN TRACE
  51. #endif // _DEBUG
  52. #endif // _GLOBALS_H