- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在使用 C 语言编程时,我遇到了与 C 预处理器相关的“条件包含”概念。我试图通过引用几个网页来理解这个概念,但到目前为止我还无法清楚地了解所指的内容。
有人可以通过示例解释这个概念吗?
最佳答案
考虑一下使用#ifdef
预处理器指令(代表#if Defined
)的代码。
#ifdef FLAG1
#include "header1.h"
#endif
现在,当您编译时,如果定义了 FLAG1
(由于架构或通过 -D
标志 - 如 gcc -DFLAG1 源代码中所示)。 c
) header1
将被包含在内。同样适用于
#ifdef FLAG1
// any valid C code
#endif
例如,人们可以使用它们来实现跨平台实现(示例被精简)——仅当在 Linux 上编译时才定义 __linux__
,而仅当在 Linux 上编译时才定义 _WIN32
在 Windows 上编译:
#ifdef __linux__ /* "If the __linux__ preprocessor variable is defined..." */
#define select_os select_linux
#define spawn_os spawn_linux
typedef int pidtype;
typedef int fdtype;
#elif defined (_WIN32) /* "Else, if the _WIN32 preprocessor variable is defined..." */
#include <windows.h>
#define select_os select_windows
#define spawn_os spawn_windows
#define strdup _strdup
typedef HANDLE pidtype;
typedef int fdtype;
#endif
(缩进只是为了清晰起见,人们通常将其省略。)
对于此 API(包括此文件的代码)的用户来说,无论代码在哪个操作系统上编译,函数看起来都是一样的。
关于c - C语言中 "conditional inclusion"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20816480/
我不确定我是否理解为什么会发生以下情况。 编译并运行: 使用 Int 而不转换为 List import scala.util.Random val xs = 1 to 10 Random.shuff
标题说明了一切...我想知道为什么当我通过例如创建 NavigableSet 的子集时headSet(E toElement),我得到一个 SortedSet,并以 boolean Include 作
我想知道如何以包容的方式使用 jQuery 的 :gt() 。我正在尝试动态显示/隐藏表格行。 $('#' + tbodyId + ' > tr:gt(' + newRowStart + '):lt(
我知道这个问题已经被问了很多次,但我不知道这里出了什么问题。 我在 C:\svn\org.eclipse.tcf.agent\agent\tcf\framework 中找到了一些头文件,其中包含编译示
我有两个实体,“用户”和“产品”,以及两个表:一个用于存储哪些用户查看哪些产品,另一个用于存储哪些用户喜欢哪些产品。我想查询一次并返回如下所示的结果: 表“ View ”: 表“喜欢”: 查询结果:
我在使用 Eclipse 运行 Hello World 程序时遇到错误。我已经安装了 MinGW 和 Cygwin,我知道我只需要一个,但我有其他编辑器使用一个而不是另一个。我检查了 GCC C++
我推测这不是代码问题,而是资源问题。 我的 IDE 是 C++ Eclipse。我引用了 Kernel32.lib 并且我可以包含 iostream、string 和 time.h 等库。但是,我不能
我有几十台气隙机器,我想将非常特定的补丁上传到这些机器上。我的解决方案是创建一个私有(private)存储库并让每台机器更新他们的/etc/apt/sources.list文件。我有一个我想在存储库中
有没有什么好的函数可以把所有的Exception原因收集到一个字符串中?printStackTrace() 方法使用 StackTraces 收集它们: HighLevelException:
有没有什么好的函数可以把所有的Exception原因收集到一个字符串中?printStackTrace() 方法使用 StackTraces 收集它们: HighLevelException:
我对 qmake 感到困惑。我读到我可以将 Qt 特殊配置包含到 .pro文件如:qt += core我还可以包括 #include 在我的项目文件中。 是否有必要同时包含这两个内容,如果可以将其包含
假设您要删除一个 C 函数从它的名字到并包括结束 curl 的那一行: int main (void) /* Cursor on this line. */ { while (...) {
我有一个 url,我想用 React 路由器路由到它。最后的id是变化的部分。 https://mywebsite.com/p/foo-bar-fizz-buzz-myid1234 我需要在 Reac
在使用 C 语言编程时,我遇到了与 C 预处理器相关的“条件包含”概念。我试图通过引用几个网页来理解这个概念,但到目前为止我还无法清楚地了解所指的内容。 有人可以通过示例解释这个概念吗? 最佳答案 考
Eclipse 版本为 20130614-0229,Kepler。 OS X 10.9。 通过 Macports 安装 Boost。 我明白这个问题真的很老了,但是我翻了十几个论坛页面还是没能解决。
所以我去了这个叫做数字媒体学院的 3D 游戏编程。我们使用 Eclipse 和 Panda3D,使用他们的 Macbook Pro 来创建 3D 游戏。我在那里创建了一款很棒的游戏,运行得很漂亮。但是
我在使用 eclipse 和 sequoyah 时遇到了一些麻烦。我写了一个简单的应用程序,没有 sequoyah,它构建成功。但是落在了模拟器上,所以我决定使用sequoyah进行原生调试。在安装
我有两个 Jenkins 项目 1) 对 git repo 进行轮询 2) 第二个触发java应用 我想配置 (1) 以仅对特定文件进行轮询,所以我在“包含区域”下进行了配置。但是,我看到项目在 re
Eclipse 不允许我包含 .我在 mac 上,当我使用 xcode 尝试同样的事情时,它可以工作。我正在运行 eclipse Indigo,并且尝试了 MAC OS X 编译器选项和跨平台编译器
当允许用户选择日期范围时,让我们说: Show me entries from [August 1] to [September 1] 作为用户,我通常希望这包括 9 月 1 日的结果。特别是当您考虑
我是一名优秀的程序员,十分优秀!