问题标签 [preprocessor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2450 浏览

haskell - Haskell 中的 CPP 扩展和多行文字

是否可以在包含多行字符串文字的 Haskell 代码上使用 CPP 扩展?Haskell 还有其他条件编译技术吗?

例如,让我们看这段代码:

如果我取消注释{-# LANGUAGE CPP #-},则 GHC 会以词法错误驳斥此代码:

使用 GHC 6.12.1,cpphs 可用。

我确认使用cpphs.compat包装器和-pgmP cpphs.compat选项会有所帮助,但我希望有一个不依赖于自定义 shell 脚本的解决方案。-pgmP cpphs不起作用。

PS 我需要为 GHC < 6.12 和 GHC >= 6.12 使用不同的代码,没有预处理器可以吗?

升级版。除了 Ganesh 接受的答案之外,我还发现另一种解决方法是将所有条件声明放在一个单独的模块中{-# LANGUAGE CPP #-},从而避免在具有多行字符串的模块中使用 CPP。

0 投票
2 回答
1204 浏览

preprocessor - 预处理指令以防止项目发布和调试符号

在定义了 Release 和 Debug 符号时,是否有限制使用预处理指令来防止项目编译?

请告诉我。

0 投票
2 回答
1300 浏览

drupal - Drupal 主题中的“引擎”指的是什么?

我一直在阅读有关 Drupal 主题和预处理函数的信息,并注意到他们按预处理函数的顺序列出了 engineName _engine_preprocessengineName _engine_preprocess_hook但我不完全确定引擎层是什么?我了解核心、包含、模块和主题。

非常感谢

0 投票
2 回答
1914 浏览

include - CruiseControl.NET 预处理器“包含”异常

这是一个与 CC.NET 预处理器公开的“定义”和“包含”功能的组合有关的奇怪问题。我们正在运行 CCNet 1.4.4.83,我们的ccnet.config文件经过结构化和拆分,以充分利用存储在主配置文件中的子文件中的常见元素块;我们还将核心项目定义也拆分为它们自己的包含文件,ccnet.config因此基本上留下了一系列包含:

这是一种享受 - 预处理器正确地包含并解析其中的<define>元素globals.xml(并递归解析其中包含的更多文件globals.xml),并且之后包含的项目(包含对那些已定义元素的引用)被正确解析。

为了进一步完善ccnet.config以减少错误破坏构建过程的可能性,我们将其更改为如下所示:

正如你所看到的,我们在它自己定义的块中嵌入了“包含”定义的常见、重复的部分,然后使用它来影响每个包含,使用路径作为参数——这个想法是文件的未来修饰符赢了'没有机会意外忘记他们新包含的项目行中的某些内容(例如预处理器 URN);只要他们的 xml 文件存在并且他们获得了正确的路径,其余的就在公共包含定义中处理。

唯一的问题是这不起作用——由于某种原因,看起来globals.xml文件没有被正确解析(或者甚至可能被包含),因为在它抱怨没有定义元素之后包含的项目;也就是说,对全局文件中定义的元素的引用似乎没有被“注册”,因为项目无法识别它们。

我们尝试从globals.xml顶层中取出嵌套包含并直接将它们包含在内,但无济于事。注释掉项目中第一个麻烦的元素引用只会导致 Validator 抱怨下一个,并显示消息"Preprocessing failed loading the XML: Reference to unknown symbol XXXXX"。但是,如果我们将主体嵌入globals.xmlinto ccnet.config,则可以。虽然听起来很奇怪,但就好像预处理器完全无法解析globals.xml,但随后愉快地浏览了项目文件,只是因为未定义全局引用而失败。

但是,如果是这种情况,验证器会静默失败。当然,因为它无法正确解析项目 XML,所以我们在“原始”或“已处理”选项卡中也一无所获。CruiseControl.NET 服务本身无法以无用的异常启动:

无法启动服务。System.Runtime.Serialization.SerializationException:在程序集“ThoughtWorks.CruiseControl.Core,版本=1.4.4.83,文化=中性,PublicKeyToken=null”中键入“ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException”未标记为可序列化. 服务器堆栈跟踪:在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo 的 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter)。序列化(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,

所有文档都说这应该有效,并且在“定义”中使用“包含”时没有提及任何不兼容或不一致。所以我很难过,在这个阶段,任何见解或建议都会受到高度重视。

0 投票
1 回答
1574 浏览

visual-c++ - Visual C++ 预处理器定义

有没有办法将 C++ 预处理器定义作为命令行参数传输到自定义预链接步骤过程调用中,或者以任何其他方式将它们导出到文件中?
示例:假设我有一个 c++ 项目,在它的调试配置中,我放置了一个预处理器定义,如 MAKUMBA_OBA=0x13
然后我添加了自定义预链接步骤,它执行一些类似的 javascript

如果它能正常工作,那就太好了,但我的 js 中从来没有得到第三个参数。所以问题是:如何将预处理器定义传递给 s 脚本?

0 投票
1 回答
144 浏览

visual-c++ - 最有用的 MSVC++ 非标准宏

该标准包括宏线 _____LINE____ 和 _____FILE_____,C99 添加了 _____FUNCTION_____,这在技术上还不是 C++ 的一部分。

MSVC++ 添加了哪些有用/酷的附加功能?我发现 _____FUNCTION_____ 是受支持的,但还有其他完全特定于 MS 的功能值得了解吗?

0 投票
3 回答
2500 浏览

python - 用 Python/Ruby 模仿 C 预处理器?

我需要用 Python 模仿 C 的预处理器特性。

如果我想运行调试版本,我使用 C 如下

我只是使用 -DDEBUG 或类似的东西来触发或关闭它。

我可以对 Python/Ruby 使用什么方法?我的意思是,我应该如何控制 python/ruby 脚本的行为,以便我可以更改影响项目中所有脚本文件的变量?

0 投票
1 回答
2715 浏览

php - Drupal 主题预处理功能 - 主要链接和吸盘菜单

当菜单是单​​级列表时,我有一个预处理功能可以正常工作。但是,我希望它与吸盘鱼菜单一起工作。我想向顶级菜单项添加一个类,以便我可以设置它的样式。这是我用于单级菜单的代码:

我一直在尝试使用该menu_tree()功能无济于事,例如:

任何想法将不胜感激。

0 投票
2 回答
4283 浏览

debugging - #ifdef 与 gfortran 77

我正在使用 gfortran 编译 FORTRAN 77,并希望通过使用预处理器指令 #ifdef 来获得调试构建选项。但是,当我使用它们时,我会收到编译时警告“非法预处理器指令”。是否可以在不偏离标准工具链的情况下拥有此功能?

0 投票
1 回答
111 浏览

actionscript-3 - 可以将 EventListener 添加到 Actionscript 3 的函数中吗?

我正在尝试在 Actionscript 3 中设置诸如面向方面的编程之类的东西,基本上我唯一需要做的就是这样:

这样,我可以在任何类中的任何方法运行之后(或之前)运行代码,从而实现许多新的可能性。

我应该如何实现这个?