最近开始学习C++,向一个日常工作用C++的 friend 请教#ifndef和#define。他说没有人使用,因为如果有人编写了正确的代码,他们就不需要了。然而,在我正在阅读的书籍(对于初学者)中,被告知使用它们是一种很好的做法。
最佳答案
如果您想使用某些特定于操作系统的功能或想为不同的平台编写不同的代码怎么办?如果您希望能够启用/禁用代码的某些功能怎么办?
这是预处理器和 #ifdef
、#define
和 #endif
。
假设您希望您的代码使用某些特定于 Windows 和 Linux 的功能:
#ifdef WINDOWS
#include <something_windows_related.h>
#else
#include <posix.h>
#endif
这在使用 OpenCL 时经常需要:
#ifdef __APPLE__
#include <OpenCL/cl.h>
#else
#include <CL/cl.h>
#endif
如果您想在需要时打开或关闭某些功能。
#ifdef HAVE_OPENCL
bool InitOpenCL(void) {
// some code
}
#endif
所以,答案是 - 这些预处理器指令绝对没问题,有时是做某些事情的唯一方法。
关于c++ - 在 C++ 中使用#ifndef 和#define 是否过时了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261780/