小编Tür*_*rım的帖子

Boost Library中的Io_context错误

我正在尝试使用Boost Libraries建立一个聊天室.但是当我尝试使用时asio::io_context,编译器说:

io_context不是asio的成员.

我建了4次Boost,我想可能问题是由于我的安装失败,但似乎不是.

#include <ctime>
#include <iostream>
#include <string>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
#include <boost/asio.hpp>

using boost::asio::ip::tcp;

std::string make_daytime_string()
{
    using namespace std; // For time_t, time and ctime;
    time_t now = time(0);
    return ctime(&now);
}

class tcp_connection
    : public boost::enable_shared_from_this<tcp_connection>
{
public:
    typedef boost::shared_ptr<tcp_connection> pointer;

    static pointer create(boost::asio::io_context& io_context)
    {
        return pointer(new tcp_connection(io_context));
    }

    tcp::socket& socket()
    {
        return socket_;
    }

    void start()
    {
        message_ = make_daytime_string();

        boost::asio::async_write(socket_, boost::asio::buffer(message_),
            boost::bind(&tcp_connection::handle_write, shared_from_this(),
                boost::asio::placeholders::error,
                boost::asio::placeholders::bytes_transferred));
    }

private: …
Run Code Online (Sandbox Code Playgroud)

c++ boost

9
推荐指数
1
解决办法
4979
查看次数

联合的位域使用

我想通过使用联合创建一个带有位字段的简单包。但是当我试图将“bit1”设置为 1 时,我的所有位域都变成了“1”。我该如何解决这个问题,我想通过使用联合而不是使用结构来完成位域部分。

所以这里是我的结构;

    struct {
    union{
        uint8_t bit1 :1 ;
        uint8_t bit2 :1 ;
        uint8_t bit3 :1 ;
        uint8_t bit4 :1 ;
        uint8_t bit5 :1 ;
        uint8_t bit6 :1 ;
        uint8_t bit7 :1 ;
        uint8_t bit8 :1 ;


    }bits;
    uint8_t trial;


    }myStruct_t;

int main(int argc, char *argv[]) {
        myStruct_t.bits.bit1 = 1;
        myStruct_t.bits.bit2 = 0;
        printf("%x",myStruct_t.bits);
        printf("%x",myStruct_t.bits.bit1);
        printf("%x",myStruct_t.bits.bit2);

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

输出为:000。

c bit-manipulation

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

在 C/C++ 中获取函数内部函数的地址?

我试图返回我调用的函数的地址,例如:

void * myfunctionname(some parameters) {
  //some codes
  //more codes.
  return &myfunctionname;
}
Run Code Online (Sandbox Code Playgroud)

如何用void *正确的类型替换以获得正确的签名?

c pointers

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

IRQ Handler 和 Callback 函数有什么区别?

我们正在使用 STM32F429I 并尝试通过不同的方式使用定时器(TIM2 和 TIM5)。在我们的代码中启用计时器并调用后;

HAL_TIM_Base_Start_IT(&htim5);
Run Code Online (Sandbox Code Playgroud)

我们可以通过调用TIM5_IRQHandler函数来更新变量。我们注意到HAL_TIM_PeriodElapsedCallback函数已完成相同的过程。

那么我们的问题是:这两个函数有什么区别吗?

embedded interrupt stm32f4

0
推荐指数
1
解决办法
8689
查看次数

标签 统计

c ×2

bit-manipulation ×1

boost ×1

c++ ×1

embedded ×1

interrupt ×1

pointers ×1

stm32f4 ×1