小编ant*_*_rh的帖子

什么是OpenSSL BIO?它们如何工作?OpenSSL中如何使用BIO?

我需要有关OpenSSL BIO的一些常规信息。对它的某种介绍。什么是OpenSSL BIO?它的总体思路是什么?我知道这是某种用于输入/输出的API。但是,例如,它与stdio或套接字API有何不同?

我知道有源,接收和过滤BIO。什么是过滤器BIO?什么是源BIO?什么是接收器BIO?

据说,过滤器BIO用于处理数据。如何使用过滤器BIO处理数据?我如何通过它运行数据?我是否必须使用该BIO_write功能将数据馈送到过滤器BIO并使用该功能获取已处理的数据BIO_read

为什么在OpenSSL中根本需要BIO?使用OpenSSL编程时如何使用它们?有什么例子吗?

OpenSSL提供哪些BIO?您能否提供一些BIO的例子并说明它们之间的区别?

openssl

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

什么时候整数到浮点转换无损?

如果int32_t总是无损地转换为double.

以下代码是否总是返回true

int is_lossless(int32_t i)
{
    double   d = i;
    int32_t i2 = d;
    return (i2 == i);
}
Run Code Online (Sandbox Code Playgroud)

是为了int64_t什么?

c c++ floating-point

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

具有大小的向量的类内初始化

struct Uct
{
    std::vector<int> vec{10};
};
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了包含值为 10 的单个元素的向量。但我需要用大小 10 来初始化该向量。像这样:

std::vector<int> vec(10);
Run Code Online (Sandbox Code Playgroud)

如何通过类内初始化来做到这一点?

c++ in-class-initialization braced-init-list

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

扩展在命令行中定义的宏之后,C预处理器添加尾随"1"

$ echo 'MACRO();' | gcc -D'MACRO() hello' -E -P -
hello 1;
      ^ why 1?!!!!
Run Code Online (Sandbox Code Playgroud)

你知道为什么在扩展宏后它会增加尾随"1"吗?

c gcc c-preprocessor

2
推荐指数
1
解决办法
56
查看次数

将指针转换为指针时的 static_cast VS reinterpret_cast

鉴于以下条件:

struct A
{
    int a;
};

struct B
{
    int b;
};

int main()
{
    A  a {1};
    A* p = &a;
Run Code Online (Sandbox Code Playgroud)

使用static_cast和使用reinterpret_castvia 进行铸造void*会产生相同的结果吗?即以下表达式之间有什么区别吗?

    static_cast      <A*> ( static_cast      <void*> (p) );
    reinterpret_cast <A*> ( reinterpret_cast <void*> (p) );
Run Code Online (Sandbox Code Playgroud)

如果我们投指针到一个类的指针到其他课程,static_cast并与reinterpret_cast?这两个运营商之间有什么区别吗?下列表达式是否相同?

    static_cast      <B*> ( static_cast      <void*> (p) );
    reinterpret_cast <B*> ( reinterpret_cast <void*> (p) );
    reinterpret_cast <B*> (                           p  );
Run Code Online (Sandbox Code Playgroud)

我可以B*在此之后使用指针来访问b成员吗?

c++ static-cast reinterpret-cast

2
推荐指数
1
解决办法
142
查看次数

为什么 const 临时绑定到右值引用参数?

我有以下功能:

void func(void * const &ptr)
{
    std::cerr << "const" << std::endl;
}

void func(void *      &&ptr)
{
    std::cerr << "mutable" << std::endl;
}

void* const func2()
{
    return nullptr;
}
Run Code Online (Sandbox Code Playgroud)

一个重载采用 const 引用参数,另一个采用可变右值引用。并且有一个返回 const 值的函数。

当我将该 const 临时值传递给函数时:

func(func2());
Run Code Online (Sandbox Code Playgroud)

我希望选择 const 重载。但相反,我得到:

mutable
Run Code Online (Sandbox Code Playgroud)

这怎么可能?为什么 const 返回值绑定到非 const rvalue 引用参数?

然而,当void*我将 const 传递struct给函数时,这不会发生:

struct A
{
};

void func(A const &a)
{
    std::cerr << "const" << std::endl;
}

void func(A      &&a)
{
    std::cerr << "mutable" << …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue overload-resolution

2
推荐指数
1
解决办法
83
查看次数