问题标签 [preprocessor-meta-program]
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.
c++ - C++ 泛型编程的精妙之处
下面的代码说明了我遇到的问题。
错误:
我试图模拟的模式是在代码/构建级别扩展程序(很像nginx模块在编译时的连接方式)。我需要构建一个可扩展的编译时结构,通过将#include
s 添加到我的构建中,它是可扩展的(可插入的),这会产生一个具有唯一名称的 boost-mpl-vector,其中包含我所有的插件。因此,如果X
是唯一的结束名称,则 X_0、X_1、X_2 是在向量应用了 mpl-vector 时沿途建立的名称push_back
。
我知道boost::preprocessor 的抽象是关键,但我还不想花时间研究它,因为我正在对系统的一部分进行原型设计,最终将在编译时模块化。
所以,为了以后的参考,
- 为什么我在上面收到错误?
- 正确的原始预处理器模式应该是什么样子。
- 正确的 boost-preprocessor-library 模式是什么样的。
c# - 我想要一种用于元编程的预处理语言
我正在寻找一种类似于 PHP 的语言,但更简短——我很想将其称为“模板引擎”,但我很确定这是错误的术语。什么是正确的术语?文本预处理器?
无论如何,我希望它是基于 .NET 的,因为我想用它来帮助编写 .NET 代码。因为 .NET 泛型不适合编写快速的数字代码(已知的解决方法太麻烦并且无法满足我的需求),所以我想使用某种预处理语言编写一个数学库,该语言允许我输出 C# 代码。例如,我想生成一系列由各种数据类型(PointF、PointD、PointI 等)组成的“Point”类:
你有什么好的建议?
c++ - C++ 预处理器元编程图灵完备吗?
我知道 C++ 模板元编程是图灵完备的。预处理器元编程也有同样的情况吗?
preprocessor - 使用预处理器进行文件迭代
我是否正确,boost 的文件递归要求使用递归的文件必须在包含路径中?
我在文档中的任何地方都没有看到它,但我只是调试了一个似乎是这种情况的问题。这使得使用它作为一种自动生成样板代码的方法在用于库时有些限制,因为库头文件可能不在包含路径中。
任何意见?
c++ - 在 Vardiadic 宏中展开 Variadic 模板(如何从目标函数中提取参数名称)
我正在努力解决具有挑战性但又简单的问题。假设我有一个目标函数如下
我想“提取”的是变量名(即'arg1','arg2')。例如,通过一些预处理为变量获取此信息是微不足道的
如果有多个变量,我也可以使用可变参数宏
但我不知道如何从目标函数中“提取”..例如,使用可变参数模板技术如下
它行不通:我将获得 'A...' 而不是解压的变量,当然...任何提示?
谢谢!注意:我使用的是 C++11,gcc 4.8.1
c++ - 在条件宏中评估非类型模板参数
我想实现 for each idiom 来遍历 2d/3d 矩阵的所有像素/体素。根据尺寸,我们有 2 个循环或 3 个循环。代码看起来像这样:
问题是如何在宏中评估模板参数。
注意:出于依赖原因,我不想使用 boost。
c++ - 如何在 C++ 预处理器中解析由空格分隔的标记?
我正在做一些预处理器元编程,我需要一种方法来转换f(a b)
为g(a,b)
C++ 预处理器。由于a
和b
是 中的两个标记C++
,因此似乎可以找到一种方法将它们分开。然而,经过数小时的工作,仍然没有解决这个问题。
boost::preprocessor
鉴于这些库在预处理过程中工作,欢迎包括任何第三方库。
此外,有没有办法分离任意标记?例如const T&
应转换为const
, T
,&
c++ - 如何在预处理阶段获取 c++ 函数调用者名称
我必须使用PERF_INSTRUMENT
库中的宏。PERF_INSTRUMENT
期望用户提供 c 风格的字符串作为函数名来打印该仪器点的位置。
但是,我不想在每次使用时都写函数名,PERF_INSTRUMENT
而是想用它来调用它,__func__
以便函数名自动包含在 perf 日志中。
但是当我使用__func__
它时,它实际上会返回operator()
,因为__func__
它嵌入在 lambda 函数中。
main()
他们是我可以将函数名称传递给PERF_INSTRUMENT
宏的任何方式吗?
请注意,我只能更改 MY CODE 行下方的代码
c++ - MSVC 中的宏扩展问题
我想知道为什么这个宏扩展如此之大。
我想要 GET_LAST(CONCAT(TEST, (1)), 2); 评价值 1。
如果您能告诉我是否可以在 MSVC 上使用它或者是否缺少某些东西,我将不胜感激。