我需要有关OpenSSL BIO的一些常规信息。对它的某种介绍。什么是OpenSSL BIO?它的总体思路是什么?我知道这是某种用于输入/输出的API。但是,例如,它与stdio或套接字API有何不同?
我知道有源,接收和过滤BIO。什么是过滤器BIO?什么是源BIO?什么是接收器BIO?
据说,过滤器BIO用于处理数据。如何使用过滤器BIO处理数据?我如何通过它运行数据?我是否必须使用该BIO_write功能将数据馈送到过滤器BIO并使用该功能获取已处理的数据BIO_read?
为什么在OpenSSL中根本需要BIO?使用OpenSSL编程时如何使用它们?有什么例子吗?
OpenSSL提供哪些BIO?您能否提供一些BIO的例子并说明它们之间的区别?
如果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什么?
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)
如何通过类内初始化来做到这一点?
$ echo 'MACRO();' | gcc -D'MACRO() hello' -E -P -
hello 1;
^ why 1?!!!!
Run Code Online (Sandbox Code Playgroud)
你知道为什么在扩展宏后它会增加尾随"1"吗?
鉴于以下条件:
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成员吗?
我有以下功能:
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)