问题标签 [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.
php - JSON.stringify() 对于序列化 JSON 对象是否可靠?
我需要将完整的对象从 Javascript 发送到 PHP。在 PHP 端执行 JSON.stringify() 然后 json_decode() 似乎很明显,但这是否允许带有“:”和“,”的字符串?我是否需要对可能导致问题的大用户输入字符串运行 escape() 函数?那个转义函数是什么?我不认为逃避对我的目的有用。
我需要了解 JSON.stringify() 有什么缺点吗?
谢谢
c - 双串化技巧究竟是如何工作的?
至少有一些C预处理器允许您将宏的值而不是其名称字符串化,方法是将它通过一个类似函数的宏传递给另一个对其进行字符串化的宏:
示例用例在这里。
这确实有效,至少在 GCC 和 Clang 中(都带有-std=c99
),但我不确定它在 C 标准术语中是如何工作的。
这种行为是否由 C99 保证?
如果有,C99如何保证?
如果不是,那么行为在什么时候从 C 定义变为 GCC 定义?
c - 内联方法名称的 GCC 预处理器
我正在做一个项目,我有如下代码:
但我得到以下结果:
在“Array”和“_init”之间有一个空格因为这是一个函数名,我显然不想要这个空格。有谁知道怎么把空间弄出来?
c-preprocessor - 定义宏中的编译指示
有没有办法将 pragma 语句与其他语句一起嵌入到宏中?
我正在尝试实现以下目标:
如果存在提升解决方案(除了波浪),我可以接受。
javascript - 在 Javascript 中,如果有一个对象具有很多作为函数的属性,那么如何将它们转换为字符串数组(函数名称)?
在 Javascript 中,如果一个对象有很多作为函数的属性:
那么如何获得这些函数的名称数组呢?也就是一个数组
谢谢。
php - 网页不保留换行符
构建一个包含多个 contentEditable div 的 Web 应用程序。用户将内容添加到 div 中,单击保存按钮,将每个 div 中的所有数据保存到 json 对象中。这会JSON.stringify
以 TEXT 形式传递到 mysql 数据库(通过 php 上传mysql_real_escape_string()
)。加载后它会返回JSON.parse
,然后通过 javascript 和 jquery 被放回原来的位置。唯一的问题是换行符没有被替换。
有没有快速解决这个问题?
c - 通过宏过度使用进行结构初始化
我有一些结构要初始化,手动执行会很乏味。我想创建一个可以帮助我的宏......但我不确定C预处理器是否足够好。
我有代表菜单的结构。它们仅由函数指针组成:
这允许我将函数和单独的函数编写为(.c 文件):
和菜单作为(.h 文件):
有什么方法可以将菜单定义折叠成一个定义吗?我当然可以做一些扩展MENU(blah, menu_frame_blah_button, NULL, menu_frame_blah_display, NULL)
的事情,但是有什么办法:
- 使其更短(NULL 或某个名称)
ON_BUTTON(...);
从结构之前删除需要
理想情况下,我想MENU(blah, button, NULL, display, NULL)
同时定义处理程序和菜单结构本身。例如,我不知道如何防止将最后一个术语扩展为ON_SWITCH(NULL)
.
或者也许我应该以其他方式接近它?
objective-c - 访问预处理器宏定义的值
如果我在 GCC_PREPROCESSOR_DEFINITIONS 下添加宏“FOO=bar”(如果使用 XCode,则添加预处理器宏),访问“FOO”值的最佳方法是什么?
目前,我使用笨拙的:
这将输出“bar”
当然,必须有更好/更清洁的方法吗?
c++ - 试图理解 C 预处理器
为什么这些代码块会产生不同的结果?
一些常用代码:
情况1:
案例2:
案例3:
我正在使用来自 VS.net 2005 sp1 的 MSVC++
编辑:目前我认为,扩展宏时预处理器的工作方式如下: 步骤 1: - 获取正文 - 删除 ## 运算符周围的任何空格 - 解析字符串,以防找到与名称匹配的标识符一个参数: - 如果它在 ## 运算符旁边,则将标识符替换为参数的字面值(即传入的字符串) - 如果它不在 ## 运算符旁边,则在首先是参数的值,然后用该结果替换标识符。(忽略 stringafy 单个 '#' 大小写 atm)-删除所有 ## 运算符
第 2 步: - 获取结果字符串并解析它以获取任何宏
现在,我相信所有 3 种情况都应该产生完全相同的结果字符串:
第 1 部分第 2 部分*
因此在第 2 步之后,应该会导致
作品*
但至少应该导致同样的事情。