在C ++中使用#ifndef和#define是否已过时?

use*_*425 5 c++ include

我最近开始学习C ++,我问了一个每天在工作中使用C ++的朋友关于#ifndef和#define的知识。他说,没有人使用,因为如果有人编写适当的代码,他们就不必管教。但是,在我读的那些书中(对于初学者而言),被告知使用它们是一种好习惯。

For*_*Bru 5

如果要使用某些特定于OS的功能或想为不同的平台编写不同的代码怎么办?如果您希望能够启用/禁用代码的某些功能怎么办?

这是预处理器和#ifdefs,#defines和#endifs。

假设您希望代码与某些Windows和Linux特定的功能一起使用:

#ifdef WINDOWS
#include <something_windows_related.h>
#else
#include <posix.h>
#endif
Run Code Online (Sandbox Code Playgroud)

使用OpenCL时通常需要这样做:

#ifdef __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
Run Code Online (Sandbox Code Playgroud)

如果要在需要时打开或关闭某些功能。

#ifdef HAVE_OPENCL
bool InitOpenCL(void) {
    // some code
}
#endif
Run Code Online (Sandbox Code Playgroud)

因此,答案是-这些预处理器指令绝对正确,有时是执行某些操作的唯一方法。