问题标签 [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 投票
1 回答
2502 浏览

c - 字符串化 C 预处理

这是我的第一篇文章,所以如果我太含糊或给出每个人都会直觉认为的信息,请告诉我。

我对用C编写语言非常陌生,只是想更好地理解预处理。我正在编写一个简单的程序,它可以使用 直接从控制台接收参数gcc -Wall -std=c99 -DSEED=argument,其中我的参数应该是一个整数,或者如果-D未定义用户将输入它。

SEED 值仅用于srand(). 我很困惑为什么如果我把一个-DSEED=a作为我的参数我的代码不会编译,而如果我把-DSEED=1它会编译。我收到“未声明(在此函数中首次使用)”错误,我真的不明白两者之间的区别。我认为#define变量类型与输入相匹配,所以如果我输入一个“a”#SEED 将是一个字符,如果我输入一个“1”#SEED 将是一个 int。

如果未定义 SEED,我正在使用#ifndef SEED命令,并且效果很好。我想我应该对输入进行“字符串化” SEED,然后检查它是否是整数。在网上阅读了一些文章后,我正在尝试使用:

这是行不通的,任何能够指出您认为我可能有的任何误解的人将不胜感激。

编辑 - 所以我确实弄清楚了为什么我在尝试时收到错误消息-DSEED=a,因为它正在将它作为变量读取。

0 投票
1 回答
562 浏览

c - 如何在预处理器中使用 C 中的字符串化执行计算

可能重复:
如何在 C 中对表达式进行字符串化

我希望我能在这里找到我的问题的一些解决方案。

我想添加在 ADD1 中定义的十六进制数字,并且需要以*str字符串形式输入。

这只是一个例子,首先证明它的可能性。我实际上在头文件中做同样的事情。

0 投票
4 回答
2701 浏览

c-preprocessor - 编译器用这个宏看到了什么?

考虑一下:

如果我后来写:

编译器是否真的看到了这个:

我认为是前面的额外哈希#A让我感到困惑。

0 投票
0 回答
270 浏览

c++ - 作为字符串数据成员的变量名

在 C++ 中是否可以声明一个具有private std::string数据成员的类,该数据成员用实例符号名称的字符串化/字符串化名称初始化?我可以看到这不适用于临时人员,但对于左值可能吗?

这是我想要的:

如果我将构造函数更改为接受一个字符串并引入一个预处理器宏,那么我几乎可以得到我想要的,但它闻起来很糟糕。

基本上我想避免的是用户必须声明符号的实例,例如:

因为它读起来很烦,打字很烦,而且是多余的。我可以理解为什么在某些情况下您可能希望存储与变量名称不同的字符串,但我专门尝试解决您知道您希望字符串等于字符串化变量名称的问题。

0 投票
1 回答
152 浏览

c++ - 宏中的 C++ 连接

我有以下一组宏(我从如何在字符串中使用编译时间常数 __LINE__的第一个答案中得到)定义了一个宏“LOCATION_PREFIX”,我可以用它来“捕获”一行代码的位置(将传递给将执行日志记录的其他函数)。

输出:

“t.cpp”(8):这里
“t.cpp”(9):这里

我希望输出为:

t.cpp(8):这里
t.cpp(9):这里

任何帮助是极大的赞赏 !

0 投票
3 回答
4075 浏览

c++ - 将成员变量名称转换为字符串

我可以char*在 C++ 中枚举类(或结构)的成员吗?如果是这样,我可以将变量名称打印为字符串吗?使用预处理器?

我有一个包含所有 const char* 成员的类。如果有一种优雅的方式来枚举每个成员变量并根据给定的字符串键检查名称作为字符串,那将是很好的。

这是可以使用的那种代码?

谁能想到一种方法来做到这一点?

0 投票
1 回答
95 浏览

c++ - 是否可以编写一个字符串化的 C++ 函数?

如果您必须编写一个与宏中的运算符“#”相同的 C++ 函数,您会怎么做?

如果可以在运行时进行,那将很有用。

0 投票
1 回答
131 浏览

perl - 重载字符串化和 utf8 标志

关于重载字符串化以及它如何与 utf8 标志交互,我有一些不明白的地方。

例如下面的代码打印:

如果我删除say $t,输出的最后一行也将是t is not utf8

0 投票
1 回答
78 浏览

c - 如何修复此字符串化错误

我得到编译器错误:

main.cpp(5):错误 C2059:语法错误:'return'

我做错了什么?

0 投票
2 回答
33582 浏览

c++ - 字符串化——它是如何工作的?

我知道:

withstr(foo)写出:"foo",因为 stringify 是在文本扩展之前执行的,但是:

xstr(foo)写出"4":。

为什么?该过程涉及哪些步骤?