【问题标题】:type mapping between cbor (javascript) and c++cbor (javascript) 和 c++ 之间的类型映射
【发布时间】:2016-04-29 08:02:23
【问题描述】:

我不知道将以下 cbor (javascript) 类型映射到哪些 C++ 类型:

  • null
  • undefined

反过来,我不知道将 C++ void 类型映射到哪个 cbor (javascript) 类型。

【问题讨论】:

  • JSON 没有 undefined 类型。而void 并不是真正的数据类型。
  • @nnnnnn 感谢您的更正,我会解决这个问题。我正在使用 cbor 编写一个 rpc 实现。

标签: javascript c++ cbor


【解决方案1】:

我认为undefined应该映射到void,因为:

function a() {}
console.log(a())

结果:

undefined

这会将::std::nullptr_t 留给null 类型。

【讨论】:

  • 在 Javascript 中,undefined 是您可以分配或测试的特定值。你如何分配void?如何测试变量是否包含void
  • 你不能分配void,但是你可以在函数中返回void,你可以测试,例如如果一个函数返回void::std::is_void<decltype(f())>{}。您还可以将表达式转换为void
  • 但这是否会测试函数已经返回的值是否为 void?或者它是否测试函数声明是什么?我要说的是用法并不真正对应于 Javascript 中的未定义值。
  • 它测试函数声明,因为 C++ 是一种静态类型语言。这个想法是,我做cbor_encode(f(cbor_decode<A>(d)...);cbor_encode()函数将根据f返回的类型来选择。
【解决方案2】:

在 C++ 中为此目的定义空结构并不少见,例如struct null_type{}struct undefined_type{}

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 2023-03-09
    • 2012-06-09
    • 2021-07-22
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多