C++ typedef后缀 "_t"笔记

事情的经过

咱看到很多代码都是这样写的:

typedef struct mystruct
{
    int number;
}mystruct_t;

这样是什么意思呢,咱问了一下身边的大佬,他们是这样回答的:

type 的缩写

但是这样写有什么意义呢,在下面咱就说一下这样写有什么用。
如果乃是用C语言,大家都知道C语言的结构体声明变量要这样:struct mystruct my;
然后在C++是这样:mystruct my;
其实呢,在C语言也可以像C++这样写:

typedef struct mystruct
{
    int number;
}mystruct_t;
mystruct_t my;

上述代码在C++里也是通用的,所以这样写可能会更好。
其实这样写并没有什么卵用,可能只是为了节省代码?

Arch Linux下配置LNMP環境

配置軟件包

# pacman -S nginx mariadb php php-fpm

配置 mariadb數據庫

鍵入如下命令初始化mariadb:

# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

啟動mariadb:

# systemctl start mariadb

若需要開機自啟動請鍵入:

# systemctl enalbe mariadb

然後設置root密碼:

# '/usr/bin/mysqladmin' -u root password 'new-password'

醬紫數據庫就配置好了。

Nginx配置

等會再更。

利用 C++ 編寫一個Telegram機器人[1] 註冊Telegram bot和編寫Hello world

註冊 Telegram Bot

請給 @BotFather 發送如下文本創建一個tg bot:

/newbot

然後直接發送要創建的bot名稱。
例如:
screenshot
醬紫就註冊好了,請將token記住。

Hello world

在中國大陸無法直接訪問Telegram,需要配置Proxychains等終端代理程式來連接Telegram網絡。
hello_tgbot.cpp:

#include <stdio.h>
#include <tgbot/tgbot.h>

int main() {
    TgBot::Bot bot("TOKEN");
    bot.getEvents().onCommand("start", [&bot](TgBot::Message::Ptr message) {
        bot.getApi().sendMessage(message->chat->id, "Hi!");
    });
    bot.getEvents().onAnyMessage([&bot](TgBot::Message::Ptr message) {
        printf("User wrote %s\n", message->text.c_str());
        if (StringTools::startsWith(message->text, "/start")) {
            return;
        }
        bot.getApi().sendMessage(message->chat->id, "Your message is: " + message->text);
    });
    try {
        printf("Bot username: %s\n", bot.getApi().getMe()->username.c_str());
        TgBot::TgLongPoll longPoll(bot);
        while (true) {
            printf("Long poll started\n");
            longPoll.start();
        }
    } catch (TgBot::TgException& e) {
        printf("error: %s\n", e.what());
    }
    return 0;
}

請將TgBot::Bot的構造函數的TOKEN修改為乃的TOKEN。
藍后用如下命令編譯:

$ g++ hello_tgbot.cpp  -o telegram_bot --std=c++11 -I/usr/local/include -lTgBot -lssl -lcrypto -lpthread -lboost_system -lboost_iostreams

運行程式:

$ proxychains4 -q ./telegram_bot

輸入網址,來進入TG BOT:

https://t.me/bot_name

將bot_name修改為你的bot名稱。
運行結果:
screenshot
咱現在不用理解這句代碼是什麼意思,只要照這個編譯出來就可以。

利用 C++ 編寫一個Telegram機器人[0] 組建編譯環境

Get started

咱這裡使用Arch Linux作為程式環境,API庫使用tgbot-cpp

安裝庫環境

官方提供的安裝庫的方法只限于Ubuntu/Debian操作系統,咱只需稍微改造一下即可:

$ pacman -S g++ make binutils cmake openssl boost

安裝好依賴后請編譯tgbot-cpp:

$ mkdir build
$ cd build; cmake ..
$ make -j8

編譯完成后請安裝:

# make install

然後就可以了,下篇文章介紹如何註冊Telegram bot和編寫一個Hello world。