相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

#define宏用于C中的调试打印?

尝试创建一个宏,可以在定义DEBUG时用于打印调试消息,如下面的伪代码:

#define DEBUG 1
#define debug_print(args ...) if (DEBUG) fprintf(stderr, args)
Run Code Online (Sandbox Code Playgroud)

如何用宏实现这一目标?

c c-preprocessor

196
推荐指数
7
解决办法
18万
查看次数

用C/C++调试:调用空函数的代价

实现调试的一个常规过程是使用

#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代码.

是否有任何"标准"惯例可以选择其中一种,或另一种我不知道的方式?是否值得从"造型"的角度来选择第二个?

谢谢

c c++ debugging

2
推荐指数
1
解决办法
865
查看次数