c++ - 在 C++ 中使用#ifndef 和#define 是否过时了?

标签 c++ include

最近开始学习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/

相关文章:

c++ - 如何在 C++ 中实现与嵌套 Perl 散列等效的功能?

C++ #include 不工作

c++ - 检测指针是否指向...的方法,到底在哪里?

c++ - 虚拟表真正存储在哪里,为什么我们不能修改它们?

c++ - 具有多重循环包含的命名空间

c++ - 在 CMake 中,如何使 `TARGET_LINK_LIBRARIES` 抑制来自第 3 方库代码的警告?

perl - 如何在 perl 中包含和使用 pm 文件

c++ - 我可以依赖嵌套的#includes 吗?

c++ - 如何在 Visual Studio 2013 中构建 OOLua

c++ - 如何保持进程运行?