#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++ 标准库 ifdef 或 ifndef 预处理器指令吗?