首页 > 解决方案 > C预处理器:不可能创建通用空检测器宏的正式证明

问题描述

有一种观点认为不可能编写通用的空检测器宏:

/*
 * Expands to token 1 if the argument list is empty.
 * Expands to token 0 if the argument list is not empty (excluding comments).
 */
#define IS_EMPTY(...)       /* ??? */

但是,确实存在一些“接近”的实现。

问题:

  1. 有人可以提供一个正式的证明或至少一个正确的论证来证明/说服不可能实现通用的空检测器宏吗?
  2. 由于确实存在一些“接近”实现,问题是:我们离“接近”实现变成“一般”实现的边界有多近?

注意:一种意见是我们非常接近。但究竟有多可怕?我们如何估计这个(数字或使用其他指标/指标)?

标签: cc-preprocessor

解决方案


推荐阅读