• 结构体指针用法


    指针用法:

      定一个结构体:

         struct mosquitto {

            mosq_sock_t sock;

    #ifndef WITH_BROKER

            mosq_sock_t sockpairR, sockpairW;

    #endif

            enum _mosquitto_protocol protocol;

            char *address;

            char *id;

            char *username;

            char *password;

            uint16_t keepalive;

            uint16_t last_mid;

            enum mosquitto_client_state state;

            time_t last_msg_in;

            time_t next_msg_out;

            time_t ping_t;

            struct _mosquitto_packet in_packet;

            struct _mosquitto_packet *current_out_packet;

            struct _mosquitto_packet *out_packet;

            struct mosquitto_message *will;

    #ifdef WITH_TLS

            SSL *ssl;

            SSL_CTX *ssl_ctx;

            char *tls_cafile;

            char *tls_capath;

            char *tls_certfile;

            char *tls_keyfile;

            int (*tls_pw_callback)(char *buf, int size, int rwflag, void *userdata);

            char *tls_version;

            char *tls_ciphers;

            char *tls_psk;

            char *tls_psk_identity;

            int tls_cert_reqs;

            bool tls_insecure;

    #endif

            bool want_write;

            bool want_connect;

    #if defined(WITH_THREADING) && !defined(WITH_BROKER)

            pthread_mutex_t callback_mutex;

            pthread_mutex_t log_callback_mutex;

            pthread_mutex_t msgtime_mutex;

            pthread_mutex_t out_packet_mutex;

            pthread_mutex_t current_out_packet_mutex;

            pthread_mutex_t state_mutex;

            pthread_mutex_t in_message_mutex;

            pthread_mutex_t out_message_mutex;

            pthread_mutex_t mid_mutex;

            pthread_t thread_id;

    #endif

            bool clean_session;

    #ifdef WITH_BROKER

            bool is_dropping;

            bool is_bridge;

            struct _mqtt3_bridge *bridge;

            struct mosquitto_client_msg *msgs;

            struct mosquitto_client_msg *last_msg;

            int msg_count;

            int msg_count12;

            struct _mosquitto_acl_user *acl_list;

            struct _mqtt3_listener *listener;

            time_t disconnect_t;

            struct _mosquitto_packet *out_packet_last;

            struct _mosquitto_subhier **subs;

            int sub_count;

            int pollfd_index;

    #  ifdef WITH_WEBSOCKETS

    #    if defined(LWS_LIBRARY_VERSION_NUMBER)

            struct lws *wsi;

    #    else

            struct libwebsocket_context *ws_context;

            struct libwebsocket *wsi;

    #    endif

    #  endif

    #else

    #  ifdef WITH_SOCKS

            char *socks5_host;

            int socks5_port;

            char *socks5_username;

            char *socks5_password;

    #  endif

            void *userdata;

            bool in_callback;

    unsigned int message_retry;

            time_t last_retry_check;

            struct mosquitto_message_all *in_messages;

            struct mosquitto_message_all *in_messages_last;

            struct mosquitto_message_all *out_messages;

            struct mosquitto_message_all *out_messages_last;

            void (*on_connect)(struct mosquitto *, void *userdata, int rc);

            void (*on_disconnect)(struct mosquitto *, void *userdata, int rc);

            void (*on_publish)(struct mosquitto *, void *userdata, int mid);

            void (*on_message)(struct mosquitto *, void *userdata, const struct mosquitto_message *message);

            void (*on_subscribe)(struct mosquitto *, void *userdata, int mid, int qos_count, const int *granted_qos);

            void (*on_unsubscribe)(struct mosquitto *, void *userdata, int mid);

            void (*on_log)(struct mosquitto *, void *userdata, int level, const char *str);

            //void (*on_error)();

            char *host;

            int port;

            int in_queue_len;

            int out_queue_len;

            char *bind_address;

            unsigned int reconnect_delay;

            unsigned int reconnect_delay_max;

            bool reconnect_exponential_backoff;

            char threaded;

            struct _mosquitto_packet *out_packet_last;

            int inflight_messages;

            int max_inflight_messages;

    #  ifdef WITH_SRV

            ares_channel achan;

    #  endif

    #endif

    #ifdef WITH_BROKER

            UT_hash_handle hh_id;

            UT_hash_handle hh_sock;

            struct mosquitto *for_free_next;

    #endif

    };

    #define STREMPTY(str) (str[0] == '')

    #endif

    将mosquitto结构体 定义成指针变量:

    Struct  mosquito *mosq

    函数中用到mosq指针:

    ---------------------------------------------------------------------------------------------------

      if(username && mosquitto_username_pw_set(mosq, username, password)){

             printf("---------------------------------UUUUUUU-------------------------------------------------------------username= %s ",(*mosq).username);-----------打印指针类型的成员变量;

              }

                  else

                       {        //设置用户名,密码 

                           if(!quiet){

                                fprintf(stderr, "Error: Problem setting username and password. "); 

                                    }

                          

                          // return 1; 

                       } 

                

                         if(mosquitto_connect(mosq,host, port, keepalive))

                          {

                         fprintf(", %d", k);

                                /*        return 1;*/

                           }

                  //}               

  • 相关阅读:
    高效编写微信小程序
    故事怎么讲才有逼格?
    基于RESTful API 怎么设计用户权限控制?
    【开源访谈】腾讯贺嘉:从小程序谈起,开发者该如何跟进新技术?
    图标字体设计
    微信小程序即将上线,创业者机会在哪里?
    微信小程序开发学习资料
    PC 微信扫码登陆
    一张二维码同时集成微信、支付宝支付
    支付宝Wap支付你了解多少?
  • 原文地址:https://www.cnblogs.com/dpf-learn/p/6963432.html
Copyright © 2020-2023  润新知