Ccl
Ccl
所以这种宏里面不应该出现函数调用,尽量使用左值
在 m.k = NULL前 m已经被 [这一行](https://github.com/miloyip/json-tutorial/blob/4aa74555ab69817ffd09ea56f522a6a2c667196c/tutorial07_answer/leptjson.c#L282) 这里压入栈了 换而言之,m的信息都已经被存储在另一个地方了,包括你刚才说的通过 malloc 分配的内存的地址 [这一行](https://github.com/miloyip/json-tutorial/blob/4aa74555ab69817ffd09ea56f522a6a2c667196c/tutorial07_answer/leptjson.c#L284) 说的很清楚了,m.k 的所有权已经被变更了,所以可以直接赋值 NULL 这段内存会作为 lept_member 的key or value 而存在 最终会在 lept_memeber 的解析中,被释放
lept_value 并不是类,而是结构体 struct, 所以其成员的默认访问级别是 public, 所以 成员u可以被访问,进而u的成员a 也可以访问, a的成员 e_ 同理 即 lept_value->u.a.e_ 而C++11 新增了 匿名union的写法,所以可以简写为 lept_value->e_ 具体,M大在这里有写,第2节的最后一句话 [匿名union](https://github.com/miloyip/json-tutorial/blob/master/tutorial03/tutorial03.md#2-%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A1%A8%E7%A4%BA) 至于VS 为什么说不可访问,按理说VS应该是支持这种语法的,不然也不会编译成功且可执行, 但语法检测的时候,似乎出了点问题?
宏在这里只是文本替换,参数没有,说明上下文中有 这个宏的用法我记得有讲,主要目的是让这个宏跟在一些条件语句后时,可以被视为一个整体,不会因为被拆分为多个语句而引发编译错误
建议你用 [这里](https://www.jianshu.com/p/65ab196bef04) 的方法把 把代码框起来 这样没办法看。。 @TaichiLi
@TaichiLi 这个地址有点问题。 这个URL显示的是正确地址,但实际跳转的并不对。 你可以看[如何在Markdown中插入连接](https://www.jianshu.com/p/ab539e9a7955) 另外你说的触发断点,能说的再详细一点吗?
@TaichiLi 内存泄露我没调试过。。。可能什么地方的内存没释放吧。。 我简单搜索了一下, [方法1](https://msdn.microsoft.com/zh-cn/library/x98tx3cf.aspx) 你可以尝试一下这里的官方方法。 或者这里的 [方法2](http://www.cnblogs.com/xingchenfeng/p/3714241.html)
你用你的手机分享一个链接,然后用QQ或者别的扫一下,看看生成的格式