结构体指针用法

指针用法:

  定一个结构体:

     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;*/

                       }

              //}               

原文地址:https://www.cnblogs.com/dpf-learn/p/6963432.html