1

我有一个我不明白的结构:

typedef struct {
  uint8_t ssid[32]; /**< SSID of target AP*/
  uint8_t password[64]; /**< password of target AP*/
  wifi_scan_method_t scan_method; /**< do all channel scan or fast scan */
  bool bssid_set;
  /**< whether set MAC address of target AP or not. Generally, station_config.bssid_set needs to be 0; and it needs to be 1 only when users need to check the MAC address of the AP.*/
  uint8_t bssid[6]; /**< MAC address of target AP*/
  uint8_t channel;
  /**< channel of target AP. Set to 1~13 to scan starting from the specified channel before connecting to AP. If the channel of AP is unknown, set it to 0.*/
  wifi_sort_method_t sort_method;
  /**< sort the connect AP in the list by rssi or security mode */
  wifi_fast_scan_threshold_t  threshold;
  /**< When scan_method is set to WIFI_FAST_SCAN, only APs which have an auth mode that is more secure than the selected auth mode and a signal stronger than the minimum RSSI will be used. */
} wifi_sta_config_t;

它通过分配“#defined”值来初始化:

wifi_config_t wifi_config = {
  .sta = {
    .ssid = WIFI_AP_NAME,
    .password = WIFI_AP_PASS,
    .bssid_set = 0
  },
};

其中WIFI_AP_NAMEWIFI_AP_PASS定义如下:

#define WIFI_AP_NAME CONFIG_WIFI_SSID
#define CONFIG_WIFI_SSID "myssid"

我现在有:

char *wifi_ssid=mynvs_read(WIFI_SSID_TYPE);
char *wifi_pass=mynvs_read(WIFI_PASS_TYPE);

我需要将这些值分配给结构.ssid.passwordwifi_config结构中分配。

怎么做?因为简单的赋值会抛出错误:

wifi_config_t wifi_config = {
  .sta = {
    .ssid = wifi_ssid,
    .password = wifi_pass,
    .bssid_set = 0
  },
};

错误:初始化器周围缺少大括号 [-Werror=missing-braces]

当我尝试 strcpy 值时,我得到了:

error: pointer targets in passing argument 1 of 'strcpy' differ in signedness [-Werror=pointer-sign]
         strcpy(wifi_config.sta.password,wifi_pass);

最好的问候马雷克

4

2 回答 2

0

结构定义:

bssid_set = 0

你的代码:

.bssid_set = 0

看到有什么不同吗?

于 2017-12-12T06:44:43.433 回答
0

这个对我有用:

strcpy((unsigned char)wifi_config.sta.ssid,(unsigned char)mynvs_wifi_ssid);
于 2018-01-18T09:59:09.313 回答