文件名称:macrofun:C 预处理器的违反标准的函数式编程宏
文件大小:26KB
文件格式:ZIP
更新时间:2024-08-03 00:07:39
C
我已经发布了 ,它提供了许多类似的宏,但速度明显更快,积极维护,当然也符合标准。 两者都限制了宏可以处理的参数数量,但 Libpp 的限制可以轻松更改。 此处仍提供 Macrofun 作为一个很酷的 hack 演示。 为 C 预处理器提供函数式编程宏,例如映射、折叠和压缩各种形式的参数。 Macrofun 只是一个演示; 请不要使用它。 这取决于可能不符合 ISO 标准的 GCC 和 Clang 的预处理行为。 第 6.10.3.4 节第 2 段规定: 如果在替换列表的这次扫描期间找到被替换的宏的名称(不包括源文件的其余预处理标记),则不会替换它。 此外,如果任何嵌套替换遇到被替换的宏的名称,则不会替换它。 这些未替换的宏名称预处理标记不再可用于进一步替换,即使稍后在宏名称预处理标记将被替换的上下文中(重新)检查它们。 然而,“嵌套替换”的含义是模棱两可的:它可能只指立即嵌套的替
【文件预览】:
macrofun-master
----zip-repeat.h(3KB)
----separators.h(3KB)
----foldl.h(2KB)
----stop.h(3KB)
----zip.h(3KB)
----LICENSE(1KB)
----blank.h(399B)
----paren.h(320B)
----map.h(2KB)
----README.md(7KB)
----consume.h(180B)
----tests()
--------zip-repeat.out.c(3KB)
--------foldl.out.c(1KB)
--------intersperse.in.c(643B)
--------foldl.in.c(633B)
--------foldr.in.c(633B)
--------foldr.out.c(1KB)
--------map.out.c(2KB)
--------intersperse.out.c(2KB)
--------map.in.c(655B)
--------map-lists.in.c(2KB)
--------zip.out.c(3KB)
--------run.bash(509B)
--------zip.in.c(3KB)
--------zip-repeat.in.c(3KB)
--------map-lists.out.c(5KB)
----stop-lists.h(874B)
----foldr.h(2KB)
----list.h(1KB)
----intersperse.h(782B)
----map-lists.h(2KB)
----args.h(250B)