问题标签 [stringification]

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 回答
71468 浏览

c - ## 预处理器运算符的应用和要考虑的问题是什么?

正如我之前的许多问题中提到的,我正在通过 K&R 工作,目前正在进入预处理器。更有趣的事情之一——我以前尝试学习 C 时从未知道的事情——是##预处理器操作符。根据 K&R:

预处理器运算符## 提供了一种在宏扩展期间连接实际参数的方法。如果替换文本中的参数与 a 相邻##,则将参数替换为实际参数, ##并删除周围的空白,并重新扫描结果。例如,宏paste 连接它的两个参数:

#define paste(front, back) front ## back

所以paste(name, 1)创建了令牌 name1

有人如何以及为什么会在现实世界中使用它?有哪些实际使用示例,是否有需要考虑的问题?

0 投票
6 回答
86620 浏览

c - 将预处理器标记转换为字符串

我正在寻找一种将预处理器令牌转换为字符串的方法。

具体来说,我在某个地方得到了:

我想用它来防止缓冲区溢出:

我愿意接受其他方式来完成同样的事情,但仅限于标准库。

0 投票
25 回答
15665 浏览

c++ - 我可以对宏使用哪些技巧?

在我们的遗留代码以及现代代码中,我们使用宏来执行漂亮的解决方案,如代码生成等。我们同时使用###运算符。

我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们使用它们的话。

0 投票
12 回答
557681 浏览

jquery - 如何将 jQuery 对象转换为字符串?

如何将 jQuery 对象转换为字符串?

0 投票
4 回答
502 浏览

perl - 为什么我在 Perl 输出中看到 HASH(0xABCDEF)?

我正在运行 perl,为 sun4-solaris-64int 构建的 v5.6.1

我在数组上调用 print:

输出如下:

或另一个例子:

输出:

HASH(0x2ece0)来自哪里?

0 投票
7 回答
24519 浏览

c - 用于创建字符串的 C 宏

替代标题(帮助搜索)

  • 将预处理器标记转换为字符串
  • 如何从C宏的值生成 char 字符串?

原始问题

我想在编译时使用C来构建文字字符串。 #define

该字符串是为调试、发布等而更改的域。

我想要一些这样的东西:

但是预处理器不会评估“”中的任何内容

  1. 有没有解决的办法?
  2. 这甚至是个好主意吗?
0 投票
3 回答
1213 浏览

objective-c - Mac OSX/iPhone 上的 C 预处理器,“#”键的使用?

我正在查看一些开源项目,并且看到以下内容:

尺寸符号前的“#”到底是什么意思?这是C字符串的某种前缀吗?

0 投票
3 回答
8140 浏览

visual-c++ - Visual-C++ 和 gcc 之间的宏 ## 连接运算符的差异

我有一个这样的宏(不完全是,但功能相当):

这在 Visual C++ 中完美运行,但 gcc 3.4.5 (MingGW) 产生以下错误:

粘贴“。” 并且“Item”没有给出有效的预处理令牌

当我使用“->”运算符时也会发生这种情况。我没有发现关于连接的提示,禁止使用这些运算符。

有人有想法吗?

0 投票
8 回答
29140 浏览

c++ - 字符串化模板参数

是否可以在 C++ 中对模板参数进行字符串化?我试过这个:

但我得到的是一个T,而不是一个int。似乎在模板实例化之前评估了预处理器宏。

有没有其他方法可以做到这一点?

模板实例化后有什么方法可以进行预处理吗?(编译器是VC++)。

0 投票
7 回答
5756 浏览

c - 这个 C 代码是如何工作的?

什么是a##b& #a

这个程序是如何工作的?


输出是


现在我明白了如何工作a##b但是为什么这两种情况(第 1 行和第 2 行)的结果不同呢?#a