Global.h
#ifndef GLOBAL_H
# define GLOBAL_H
#define DEBUG
#ifdef DEBUG
# define IF_DEBUG( ... ) __VA_ARGS__
#else
# define IF_DEBUG( ... )
#endif /* DEBUG */
#endif /* GLOBAL_H */
Main.cpp的
#include <string>
#include <iostream>
#include "Global.h"
int main() {
int A = 1;
int B = 2;
int C = 0;
IF_DEBUG(
std::cout << "\nStep 1> Calculating...\n";
)
C = A + B;
// DO WHATEVER
IF_DEBUG(
std::cout << "\nStep n> ...\n";
)
// ...
std::cout << C << std::endl;
// Note: I could also do some operations within the IF_DEBUG macro.
IF_DEBUG(
int X = 10;
int Y = 5;
int Z = X / Y;
std::cout << Z << std::endl;
)
IF_DEBUG(
std::cout << "\nDebugged! This program has been paused. Enter any key to continue!\n";
::getchar();
)
return 0;
}
您是否看到我如何在全局头文件(Global.h)中定义IF_DEBUG
以及我如何经常使用
它在主源文件(Main.cpp)中用于调试目的?
这样做是否安全可靠?
我问这个问题,因为我不确定是否可以这样做。当我向朋友展示这个时,他说这样做“不好”。因此,我不确定。
答案 0 :(得分:3)
这是一个非常常见且有用的技巧。但最好不要在源代码中使用#define DEBUG
。您可以在编译命令行中定义它。 g++ -DDEBUG -c file.cpp
将编译代码,就像定义了DEBUG
一样。
如果您使用Makefile
,可以将其添加到CPPFLAGS
(C预处理程序标志)变量:CPPFLAGS=-DDEBUG
。
如果您正在使用IDE,请尝试在项目设置中找到C预处理器标志。