小编Nik*_*128的帖子

是否可以使用 std::ignore 来丢弃函数的返回值以避免任何相关的编译器警告?

我知道您可以使用static_cast<void>,但它对我来说似乎太冗长了,并且没有反映我想要丢弃返回值而不是将其转换为任何东西的初衷。

最近我偶然发现std::ignore,它可以接受任何类型的值,名称清晰易读,对我来说似乎很合适。

我知道最初的意图是std::ignore与 一起使用std::tie来丢弃任何不需要的值,但我猜想 的最初意图static_cast是为了比丢弃值更好的原因而实际转换值,这样编译器就不会抱怨。

那么,可以用于std::ignore我在问题中描述的目的吗?

例如:

std::ignore = std::transform(...);
Run Code Online (Sandbox Code Playgroud)

c++ gcc c++14

19
推荐指数
2
解决办法
1658
查看次数

当 sizeof 的大小与实际对象大小不匹配时,一切如何工作(包括运算符“-&gt;”)?

在下面的代码中,我定义了一个9 字节的结构,它与 16 字节的大小对齐。然后我从堆中动态分配 9 个字节并将其分配给标头指针。

struct header                 
{
     uint8_t chunk_id;               
     long int format;                 
};

int main()
{   
    std::cout << "sizeof(header) " << sizeof(header) << '\n';

    auto head = (header*)malloc(9);
    head->chunk_id =3;
    head->format=5;    
    std::cout << (int)head->chunk_id << " " << head->format << '\n' << sizeof(*head);

    free(head);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sizeof(header) 16
3 5
16
Run Code Online (Sandbox Code Playgroud)

事实证明,sizeof仍然通知这个对象是 16 个字节(尽管它是 9 个)。我想它只是看结构的定义。但是,当sizeof的大小与实际对象大小不匹配时,一切如何工作(包括运算符“->”)?

c++ struct memory-alignment

3
推荐指数
1
解决办法
55
查看次数

如何允许应用程序声明“https”方案 URI?(即如何从 https URL 打开桌面应用程序?)

目前我正在尝试为 OAuth 2.0 授权流程创建一个客户端,实际上是一个本机应用程序。此处的规范指出有 3 种方法来处理重定向 URI:自定义 URI 方案、环回接口和声明的“https”方案 URI

我很难掌握如何实现这些东西,因为我尝试在互联网上找到它但无济于事(当我在环回服务器或自定义 url 方案上寻找信息时,我没有遇到这样的问题实现,事实上我已经成功地实现了它们)。

我确信我用错了词,所以我寻求帮助。如何允许应用程序声明“https”方案 URI?有些资源会很完美。平台是Windows和Linux。

linux windows redirect oauth oauth-2.0

3
推荐指数
1
解决办法
1696
查看次数

标签 统计

c++ ×2

c++14 ×1

gcc ×1

linux ×1

memory-alignment ×1

oauth ×1

oauth-2.0 ×1

redirect ×1

struct ×1

windows ×1