问题标签 [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 投票
13 回答
29659 浏览

java - 相当于Java中的#define?

如果包含特定库,我正在编写一个需要一些代码的库。由于此代码分散在整个项目中,如果用户不必自己注释/取消注释所有内容,那就太好了。

在 C 语言中,这很容易#define在标头中使用 a ,然后使用 . 包围的代码块#ifdefs。当然,Java 没有 C 预处理器……

澄清一下 - 几个外部库将与我一起分发。我不想将它们全部包含在内以最小化我的可执行文件大小。如果开发人员确实包含了一个库,我需要能够使用它,如果没有,那么它可以被忽略。

在 Java 中执行此操作的最佳方法是什么?

0 投票
2 回答
447 浏览

java - 使用 Javacc 进行预处理/在流中推送一些字符?

使用javacc我可以在输入流前面推送一些新字符吗?

例如,假设我的解析器解析以下语法:

我如何告诉 javacc在调用解析器之前${Volume}它的扫描器应该预处理?(Title,(Chapter,Paragraph+)+)

可以使用MORE语句来实现吗?

谢谢

0 投票
3 回答
3154 浏览

drupal - drupal 的 hook_preprocess_page 没有按预期工作

我遇到了一个问题,即 hook_preprocess_page 对 &$variables 的更改未呈现,即使它是 $theme_registry['page']['preprocess functions'] 下的最后一项。将 $variables 的内容记录到文件中会显示内容已更改,但站点上的内容似乎未更改。刷新了drupal上的所有缓存,刷新了所有浏览器缓存,结果仍然相同。

/tmp/vars.txt 正确显示变量,但浏览器仍显示正在加载的脚本。

这可能是一个愚蠢的例子,但我在其他情况下遇到了 hook_preprocess_page 这个问题,它真的有助于理解这里发生了什么......

谢谢。

0 投票
3 回答
1720 浏览

c++ - 确定 C++0x 可用性

我正在尝试确定编译时 C++0x 功能是否可用。有通用的预处理器宏吗?我正在使用 Visual Studio 2010 的编译器和 Intel 的编译器。

0 投票
3 回答
228 浏览

regex - 将一个文件包含到另一个文件中

我正在寻找用于构建 JS 文件的非常简单的模板脚本。它应该只做一件事:将一个文件包含到另一个文件中。

模板(main.js)

脚本.js

样式.css

输出


我做了cat main.js | sed -e 's!/\*> \(.*\) \*/!cat \1!g'。输出:

如何使cat \1实际工作?

我将使用它来构建 UserJS(Greasemonkey 脚本)。我的存储库中的 JS 和 CSS 文件很少。我想让它们彼此分开。但结果脚本必须只有一个,所以我需要将所有 JS 和 CSS 文件合并到它。

我可以使用 sed、awk、perl 或 ruby​​。


最后,我制作了js-preprocessor。多谢你们!

0 投票
9 回答
14837 浏览

python - python相当于'#define func()'或如何注释掉python中的函数调用

我的 python 代码与许多用于(调试|分析|跟踪等)的函数调用交织在一起,例如:

我想从代码中#define 这些资源消耗函数。类似 c 的东西

是的,我知道日志记录模块日志记录级别机制可用于屏蔽低于设置日志级别的日志记录。但是,我要求一种让python解释器跳过函数的通用方法(即使它们没有做太多也需要时间来运行)

一个想法是将我想要注释掉的函数重新定义为空函数:

上面的思路还是调用了一个函数,可能会产生无数其他的问题

0 投票
7 回答
4816 浏览

java - 面向 Java 等面向对象语言的嵌入式 SQL

让我在 OO 语言中使用 SQL 感到恼火的一件事是必须在字符串中定义 SQL 语句。

当我在 IBM 大型机上工作时,这些语言使用 SQL 预处理器从本机代码中解析 SQL 语句,因此这些语句可以用明文 SQL 编写,而无需对字符串进行混淆,例如在 Cobol 中有一个EXEC SQL 。 ... END-EXEC语法结构,允许将纯 SQL 语句嵌入到 Cobol 代码中。

...这使得 SQL 语句非常容易阅读和检查错误。在EXEC SQL .... END-EXEC标记之间没有缩进、换行等限制,因此您可以根据喜好格式化 SQL 语句。

请注意,此示例适用于单行选择,当需要多行结果集时,编码是不同的(但仍然易于阅读)。

所以,以Java为例

  1. 是什么让“旧 COBOL”方法不受欢迎?不仅是 SQL,而且系统调用也可以通过这种方法变得更具可读性。我们称之为嵌入式外语预处理器方法。

  2. 用于 SQL的嵌入式外语预处理器是否有用?您会看到能够在 java 代码中编写本机 SQL 语句的好处吗?

编辑

我真的在问您是否认为 OO 语言中的 SQL 是一种倒退,如果不是,那么可以做些什么来使它变得更好。

0 投票
1 回答
62693 浏览

wix - WiX 未定义的预处理器变量

我开始使用 WiX 进行自动构建以创建我的 c# 项目的 msi,并且遇到错误“未定义的预处理器变量 '$(var.MyProject.TargetDir)'”

我正在使用最新的 WiX v3.0.5419。在我的 wxs 文件中,我尝试使用此网页上列出的预处理器变量(http://blogs.msdn.com/jrock/archive/2008/01/29/complete-list-of-candle-preprocessor-变量.aspx

我已将 MyProject 的引用添加到 .wixproj 中,如果我在记事本中打开它,我可以看到该引用。

这是我用来创建 msi 的 nant 构建脚本。也许是因为 .wixproj 知道构建中未使用的项目引用?

任何人都可以启发我吗?

0 投票
2 回答
4695 浏览

drupal - cck 节点类型的预处理函数

(注意:我最初是在 drupal.org 上发布的,然后才记得我从来没有在那里得到回复。所以,很抱歉交叉发布)

您好,有没有办法(内置或其他)为特定的 cck 节点类型添加预处理功能?我正在寻找对我的 cck 节点类型中的字段进行一些预处理。目前我可以使用 theme_preprocess_node 然后在 $node->type 上进行切换,或者对特定字段名称使用主题功能(并且仍然进行切换以确保当前字段使用在我正在寻找的节点类型内为了)。我的建议是有这样的功能......

...但我不知道是否可以像建议模板文件一样建议预处理功能

谢谢!抢

0 投票
2 回答
2400 浏览

javascript - Javascript友好的预处理器困境

我已经在一个(即将完成的)Javascript 项目上工作了 14 个多月了。该项目最初是一个我希望在一夜之间完成的 hack,但随着时间的推移,Javascript 部分已经增长到 68 个单独的文件和 10,314 个非空行,遗憾的是目前依赖于 C 预处理器进行构建。

很难解释我是如何最终将 cpp 用于 Javascript 的:这只是一个 hack,我需要一些东西来给我宏扩展、ifdef、define 和包含,而不需要太多努力。经过大约 3 秒的考虑,我意识到 cpp 非常适合该任务:

  • 提供一个在发布模式下消失的 LOG() 宏。
  • 提供一个在发布模式下消失的 ASSERT() 宏,并生成带有原始文件和行号标记的异常。
  • 将 LOG() 和 ASSERT() 实现交换为允许生成“已检查”构建的代码,该构建在发生时以紧凑的形式记录事件,如果发生崩溃,则将其报告回服务器。
  • 根据与 Python 后端共享的配置文件,将 PROJECT_SOME_CONFIG_VAR_NAME 替换为“1”。

像所有真正的 hack 一样,这个 hack 现在已经被硬编码到项目中,以至于我真的不想考虑替换它所需的工作。我的项目正处于我想将代码库移动到它自己的专用测试服务器(而不是我的笔记本电脑)的阶段,但是在设置 Linux 实例时,我发现 4.1 之后的 GNU cpp 版本不再预处理 Javascript因错误而崩溃。

与其将特定版本的 GCC 添加到构建要求列表中,我认为现在是真正解决这个烂摊子的好时机。但是,我的问题是,我找不到与 cpp 具有相同功能和功能的替代预处理器!我考虑过 m4,但 m4 本身就是一个痛苦的世界。我发现的其他特定于 Javascript 的预处理器缺少我目前依赖的所有功能,例如:

  • __FILE__&__LINE__
  • 可变参数宏
  • 包括警卫
  • 令牌连接
  • 条件编译

我正在认真考虑为 Javascript 实现一个全新的预处理器,它完全借用了 C 预处理器语法,因为它运行良好。我只是想知道在这样做之前是否有更好的选择。:) 也许已经有一个类似 cpp 的通用预处理器我可以换掉?替换这 68 个文件中的所有预处理器语法所需的工作量接近于简单地重新实现预处理器所需的工作量。

我很惊讶我能在依赖 C 预处理器的情况下做到这一点。在这项任务中,它比健康的头脑更有效地理解。对我开放的另一个选择是为 Linux、Darwin-i386、Win32 静态构建 cpp-4.1 版本,并将这些二进制文件存储在项目的存储库中。

帮助!