问题标签 [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.
c - ## 预处理器运算符的应用和要考虑的问题是什么?
正如我之前的许多问题中提到的,我正在通过 K&R 工作,目前正在进入预处理器。更有趣的事情之一——我以前尝试学习 C 时从未知道的事情——是##
预处理器操作符。根据 K&R:
预处理器运算符
##
提供了一种在宏扩展期间连接实际参数的方法。如果替换文本中的参数与 a 相邻##
,则将参数替换为实际参数,##
并删除周围的空白,并重新扫描结果。例如,宏paste
连接它的两个参数:
#define paste(front, back) front ## back
所以
paste(name, 1)
创建了令牌name1
。
有人如何以及为什么会在现实世界中使用它?有哪些实际使用示例,是否有需要考虑的问题?
c - 将预处理器标记转换为字符串
我正在寻找一种将预处理器令牌转换为字符串的方法。
具体来说,我在某个地方得到了:
我想用它来防止缓冲区溢出:
我愿意接受其他方式来完成同样的事情,但仅限于标准库。
c++ - 我可以对宏使用哪些技巧?
在我们的遗留代码以及现代代码中,我们使用宏来执行漂亮的解决方案,如代码生成等。我们同时使用#
和##
运算符。
我很好奇其他开发人员如何使用宏来做很酷的事情,如果他们使用它们的话。
jquery - 如何将 jQuery 对象转换为字符串?
如何将 jQuery 对象转换为字符串?
perl - 为什么我在 Perl 输出中看到 HASH(0xABCDEF)?
我正在运行 perl,为 sun4-solaris-64int 构建的 v5.6.1
我在数组上调用 print:
输出如下:
或另一个例子:
输出:
HASH(0x2ece0)
来自哪里?
c - 用于创建字符串的 C 宏
替代标题(帮助搜索)
- 将预处理器标记转换为字符串
- 如何从C宏的值生成 char 字符串?
原始问题
我想在编译时使用C来构建文字字符串。 #define
该字符串是为调试、发布等而更改的域。
我想要一些这样的东西:
但是预处理器不会评估“”中的任何内容
- 有没有解决的办法?
- 这甚至是个好主意吗?
objective-c - Mac OSX/iPhone 上的 C 预处理器,“#”键的使用?
我正在查看一些开源项目,并且看到以下内容:
尺寸符号前的“#”到底是什么意思?这是C字符串的某种前缀吗?
visual-c++ - Visual-C++ 和 gcc 之间的宏 ## 连接运算符的差异
我有一个这样的宏(不完全是,但功能相当):
这在 Visual C++ 中完美运行,但 gcc 3.4.5 (MingGW) 产生以下错误:
粘贴“。” 并且“Item”没有给出有效的预处理令牌
当我使用“->”运算符时也会发生这种情况。我没有发现关于连接的提示,禁止使用这些运算符。
有人有想法吗?
c++ - 字符串化模板参数
是否可以在 C++ 中对模板参数进行字符串化?我试过这个:
但我得到的是一个T
,而不是一个int
。似乎在模板实例化之前评估了预处理器宏。
有没有其他方法可以做到这一点?
模板实例化后有什么方法可以进行预处理吗?(编译器是VC++)。
c - 这个 C 代码是如何工作的?
什么是a##b
& #a
?
这个程序是如何工作的?
输出是
现在我明白了如何工作a##b
。但是为什么这两种情况(第 1 行和第 2 行)的结果不同呢?#a