#ifdef _CH_ 预处理器指令在 C 中做了啥?

Posted

技术标签:

【中文标题】#ifdef _CH_ 预处理器指令在 C 中做了啥?【英文标题】:What does #ifdef _CH_ preprocessor directive do in C?#ifdef _CH_ 预处理器指令在 C 中做了什么? 【发布时间】:2014-10-29 23:50:55 【问题描述】:

具体来说,_CH_ 是什么?我很确定这与某种#include 安全有关。

这是我在头文件中找到的代码形式:

#ifndef FOOBAR_H
#define FOOBAR_H

// Function prototypes

#ifdef _CH_
#pragma importf "foobar.c"
#endif
#endif

【问题讨论】:

Ch ? 如果您使用的是 CH,它将变为 1。然后执行#pragma importf "foobar.c"然后foobar.c就加载到这个地方了。 【参考方案1】:

CH 是一个 C/C++ 解释器。相关信息可以在here找到,描述如下:

“Ch 是现存最完整的跨平台 C 解释器和脚本引擎。”。

检查_CH_ 似乎是为了确定C 文件是否正在CH 下处理。在这种情况下,如果它正在由CH 处理,那么它将处理#pragma importf "foobar.c" 行。

据我所知,CH documentation #pragma importf 导入另一个文件:

先搜索当前目录下的module1.c,再搜索_fpath中指定的目录

在我们的例子中,它会搜索“foobar.c”并导入它。

CH 以外的环境中,_CH_ 不会被定义,#ifdef _CH_ 块中的语句将被忽略。

【讨论】:

谢谢!这是一位教授的代码,为什么我并不惊讶它与某些专有软件有关? 我唯一一次看到提到 CH 是关于 Lego Mindstorm 机器人。它似乎有一个包括学术界在内的利基市场。

以上是关于#ifdef _CH_ 预处理器指令在 C 中做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

C预处理器和C库

C 中的预处理器指令:使用 __LINE__ 的宏

为啥在预处理器定义中使用 if 语句?

有 C++ 标准库 ifdef 或 ifndef 预处理器指令吗?

C #include语句在Fortran代码中做了什么? [关闭]

来自 C++ 代码的预处理器指令 (_VARIADIC_MAX)