草庐IT

define_macros

全部标签

c++ - #define NULL nullptr 是否安全?

我在许多最顶层的头文件中看到了下面的宏:#defineNULL0//C++03在所有代码中,NULL和0可以互换使用。如果我把它改成。#defineNULLnullptr//C++11会不会造成不良的副作用?我能想到的唯一(好的)副作用是以下用法会变得不正确;inti=NULL; 最佳答案 Ihaveseenbelowmacrointopmostheaderfile:你不应该看到的,标准库在中定义了它。(和)。而且,IIRC,根据标准,重新定义标准头文件定义的名称会导致未定义的行为。所以从纯粹的标准角度来看,你不应该这样做。我见过人

c++ - 有没有办法在另一个#define 中执行#define?

我知道我想在腿上开枪;)但是,它可以让我使其余(大量)代码更小且更具可读性。在另一个预处理器宏中创建预处理器宏有什么棘手的方法吗?这是我正在寻找的示例。我的真实场景更复杂//That'swhatIwanttodoandsurelyC++doesn'tlikeit.#defineMACROCREATER(B)#defineMACRO##BB+Bvoidfoo(){MACROCREATOR(5)//Thisshouldcreatenewmacro(#defineMACRO55+5)inta=MACRO5;//thiswillusenewmacro} 最佳答案

c++ - #define 命名空间中的语句

如果我在这样的命名空间中有#define语句:namespaceMyNamespace{#defineSOME_VALUE0xDEADBABE}我说#define语句不限于命名空间是否正确?以下是“正确”的做法吗?namespaceMyNamespace{constunsignedintSOME_VALUE=0xDEADBABE;} 最佳答案 正确,#define不受命名空间的约束。#define是preprocessor指令-它导致在通过编译器编译之前对源文件进行操作。命名空间在编译步骤中使用,编译器无法深入了解#define的内

c++ - 多行 DEFINE 指令?

我不是专家,所以请放轻松。这两个代码段有什么区别吗?#defineBIT3(0x1和#defineBIT3(0x1另外,有没有办法在一行中写第一个?这种多线样式的意义何在?下面的代码好吗?#defineBIT3(0x1 最佳答案 如果您有一个非常复杂的宏,如果它全部位于一行将难以阅读(尽管不建议使用非常复杂的宏),则多行宏很有用。通常,您可以使用续行字符\编写多行定义。.所以例如#defineMY_MACROprintf(\"Ilike%dtypesofcheese\n",\5\)但是你不能在你的第一个例子中做到这一点。你不能像那样

c++ - 为什么有人会使用#define 来定义常量?

这是一个简单的问题,但为什么有人会使用#define来定义常量?有什么区别#definesum1和constintsum=1; 最佳答案 #define有许多不同的应用程序,但您的问题似乎是关于一个特定的应用程序:定义命名常量。在C++中,很少有理由使用#define来定义命名常量。#define通常在C代码中广泛使用,因为C语言在定义常量时与C++有很大不同。简而言之,constint对象在C中不是constants,这意味着在C中定义真正常量的主要方法是使用#define。(另外,对于int常量,可以使用枚举)。

c++ - 为什么使用#define 而不是变量

#define在C++中有什么意义?我只看到了使用它代替“魔数(MagicNumber)”的示例,但我没有看到将值赋给变量的意义。 最佳答案 #define是C和C++的预处理器语言的一部分。在代码中使用它们时,编译器只需替换#define随心所欲地声明。例如,如果您厌倦了写作for(inti=0;i一直以来,您都可以执行以下操作:#definefori10for(inti=0;i如果你想要更通用的东西,你可以创建预处理宏:#definefori(x)for(inti=0;i如果您只想在某些特定构建中使用某些代码,它对于条件编译(#

javascript - Uncaught ReferenceError : ytcfg is not defined (also __ytRIL is not defined)

几个月来我一直在使用YouTubeIFramePlayerAPI没有问题,最近在播放器加载时开始看到此异常:UncaughtReferenceError:ytcfgisnotdefined检查iframe,我看到成功调用yt.setConfig,但稍后ytcfg.set失败。API最近是否更改了?任何播放器参数都可能导致此问题?yt.setConfig({...});writeEmbed();ytcsi.info('st',35);ytcfg.set({"TIMING_ACTION":"","CSI_VIEWPORT":true,"TIMING_INFO":{"c":"WEB","yt

去测试标志: flag provided but not defined

您好,我在go中测试时使用了一个标志:file_test.govarip=flag.String("ip","noip","test")我只在一个测试文件中使用它。仅测试一个测试文件时它工作正常,但是当我运行时:gotest./...-ip127.0.0.1alleoftheothertestfilesay:flagprovidedbutnotdefined.你见过吗?问候 最佳答案 flag.Parse()在你的标志被定义之前被调用。您必须确保所有标志定义发生在调用flag.Parse()之前,通常通过在init()函数中定义所有

json - Google 的 "define: "是通过 API 实现的吗?

我想获得使用Google中特殊功能(例如“定义:[短语]”)的搜索结果,但我似乎找不到与此相关的信息。有谁知道我可以在哪里获取JSON格式的数据(就像Google的其他API一样),而无需手动抓取结果页面?谢谢,以利 最佳答案 我希望我没有为此设置赏金,因为几天后我偶然发现了答案,这真的很简单。如果您想要爱的定义,请访问以下网址:http://www.google.com/dictionary/json?callback=a&sl=en&tl=en&q=love你会得到一个包含JSONP的响应流,内容如下(“美化”用于学习目的,AP

python - 名称错误 : name 'reduce' is not defined in Python

我正在使用Python3.2。试过这个:xor=lambdax,y:(x+y)%2l=reduce(xor,[1,2,3,4])并得到以下错误:l=reduce(xor,[1,2,3,4])NameError:name'reduce'isnotdefined尝试将reduce打印到交互式控制台-收到此错误:NameError:name'reduce'isnotdefinedreduce真的在Python3.2中被移除了吗?如果是这样的话,还有什么办法呢? 最佳答案 已移至functools.