jjzjj

stringification

全部标签

javascript - 为什么不能将函数表达式字符串化?

为什么这不产生任何东西?console.log(JSON.stringify(function(){console.log('foobar');})); 最佳答案 JSON根本无法将函数字符串化,它处理它们就像处理undefined或null值一样。您可以在EcmaScript5.1§15.12.3查看确切的算法。,另见descriptionatMDN.但是你当然可以通过将它们转换为字符串来将函数表达式字符串化,试试console.log(""+function(){console.log('foobar');})

c++ - 使用 %s 格式化时 # 的作用是什么

我遇到了这个断言示例,想知道#的用途:#defineASSERT(x)if(!(x)){\int*p=NULL;\DBGPRINTF("Assertfailed:[%s]\r\nHalting.",#x);\*p=1;\} 最佳答案 它是“stringize”预处理操作符。它将标记作为参数传递给宏参数x并将它们转换为字符串文字。#defineASSERT(x)#xASSERT(abcd)//isreplacedby"abcd" 关于c++-使用%s格式化时#的作用是什么,我们在Stack

c++ - 如何在#ifdef 中执行宏扩展?

我有一些相当通用的代码,它们使用预处理器宏将某个前缀添加到其他宏上。这是发生的事情的一个非常简化的例子:#defineMY_VAR(x)prefix_##x“prefix_”实际上是在别处定义的,所以每次包含文件时都会不同。它运行良好,但现在我有一些代码,如果其中一个标记不存在,我想跳过,但这不起作用:#ifdefinedMY_VAR(hello)我希望它扩展到的是:#ifdefprefix_hello但是我不知道怎么办。我需要使用MY_VAR()宏来进行扩展,所以我不能只对名称进行硬编码。(它实际上是针对一些测试代码,相同的代码每次都包含不同的前缀来测试一堆类,我想跳过一些类的几个测

c++ - 如何使用 cpp 将宏转换为字符串?

GNU的cpp允许你像这样将宏参数转换成字符串#defineSTR(x)#x然后,STR(hi)被替换为"hi"但是如何将宏(不是宏参数)变成字符串呢?假设我有一个具有某些值的宏CONSTANT,例如#defineCONSTANT42这不起作用:STR(CONSTANT)。这会产生"CONSTANT",这不是我们想要的。 最佳答案 诀窍是定义一个调用STR的新宏。#defineSTR(str)#str#defineSTRING(str)STR(str)然后STRING(CONSTANT)根据需要生成"42"。

c++ - 如何使用 C 预处理器将连接的字符串转换为宽字符?

我正在从事一个项目,其中有许多通过连接(数字等)形成的常量字符串。例如,我有一个LOCATION宏,它将__FILE__和__LINE__格式化为一个字符串,我可以用它来知道我在哪里打印消息或错误时的代码:#define_STR(x)#x#defineSTR(x)_STR(x)#defineLOCATION__FILE__"("STR(__LINE__)")"因此,这将格式化一个位置,如“file.cpp(42)”。问题是当我尝试将结果转换为宽字符串时:#define_WIDEN(x)L##x#defineWIDEN(x)_WIDEN(x)#defineWLOCATIONWIDEN(L

c++ - CPP : avoiding macro expansion of a macro function parameter

我想做的(为了记录目的)是这样的:编写这段代码是为了说明我的问题,实际代码很复杂,是的,即使在C++上我也有充分的理由使用宏=)#defineLIB_SOME1#defineLIB_OTHER2#defineWHERE"atfile#a,line#l,function#f:"//(lookforsyntaxhightlightingerroratSOxd)#defineLOG_ERROR_SIMPLE(ptr,lib,str)ptr->log("ERROR"str\"atlibrary"#lib);#defineLOG_ERROR(ptr,lib,str)LOG_ERROR_SIMPL

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

如何将jQuery对象转换为字符串? 最佳答案 我假设您要的是完整的HTML字符串。如果是这样的话,像这样的事情就可以了:$('').append($('#item-of-interest').clone()).html();对此有更深入的解释here,但实际上您创建了一个新节点来包装感兴趣的项目,进行操作,将其删除,然后获取HTML。如果您只是追求字符串表示,那么请使用newString(obj)。更新我在2009年写了原始答案。截至2014年,大多数主流浏览器现在都支持outerHTML作为native属性(例如,参见Firef

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

如何将jQuery对象转换为字符串? 最佳答案 我假设您要的是完整的HTML字符串。如果是这样的话,像这样的事情就可以了:$('').append($('#item-of-interest').clone()).html();对此有更深入的解释here,但实际上您创建了一个新节点来包装感兴趣的项目,进行操作,将其删除,然后获取HTML。如果您只是追求字符串表示,那么请使用newString(obj)。更新我在2009年写了原始答案。截至2014年,大多数主流浏览器现在都支持outerHTML作为native属性(例如,参见Firef

c++ - 有没有办法在可变参数宏参数上使用 C++ 预处理器字符串化?

我的猜测是这个问题的答案是否定的,但如果有办法,那就太棒了。为了澄清,假设我有以下宏:#defineMY_VARIADIC_MACRO(X...)//Doessomestuffhereinthemacrodefinition我想做的是在将X的所有变量传递给可变参数函数之前以某种方式对其进行字符串化;这里的关键字是之前。我意识到没有办法真正从宏定义中访问各个参数,但是有没有办法将所有参数字符串化,可能类似于以下内容?#defineMY_VARIADIC_MACRO(X...)some_variadic_function("somestring",#X) 最佳答

c++ - 有没有办法在可变参数宏参数上使用 C++ 预处理器字符串化?

我的猜测是这个问题的答案是否定的,但如果有办法,那就太棒了。为了澄清,假设我有以下宏:#defineMY_VARIADIC_MACRO(X...)//Doessomestuffhereinthemacrodefinition我想做的是在将X的所有变量传递给可变参数函数之前以某种方式对其进行字符串化;这里的关键字是之前。我意识到没有办法真正从宏定义中访问各个参数,但是有没有办法将所有参数字符串化,可能类似于以下内容?#defineMY_VARIADIC_MACRO(X...)some_variadic_function("somestring",#X) 最佳答
12