我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
尝试创建一个宏,可以在定义DEBUG时用于打印调试消息,如下面的伪代码:
#define DEBUG 1
#define debug_print(args ...) if (DEBUG) fprintf(stderr, args)
Run Code Online (Sandbox Code Playgroud)
如何用宏实现这一目标?
实现调试的一个常规过程是使用
#ifdef DEBUG
...debugging tests...
#endif
Run Code Online (Sandbox Code Playgroud)
有时,代码的某些部分需要典型的"检查"算法,因此人们通常希望将其包装在函数上,这样只有在定义了DEBUG标志时才调用代码.让该函数调用myDebug();
我看到两种自然的方法:每次调用myDebug()时都添加ifdef,如下所示:
#ifdef DEBUG
myDebug();
#endif
Run Code Online (Sandbox Code Playgroud)
或myDebug定义为:
void myDebug()
{
#ifdef DEBUG
...code...
#endif
}
Run Code Online (Sandbox Code Playgroud)
基本上,第一个避免函数调用,而第二个避免使用大量的#ifdef/#endif代码.
是否有任何"标准"惯例可以选择其中一种,或另一种我不知道的方式?是否值得从"造型"的角度来选择第二个?
谢谢