ESP8266 Developer Zone The Official ESP8266 Forum 2016-06-20T18:14:47+08:00 https://bbs.espressif.com:443/feed.php?f=7&t=2312 2016-06-20T18:14:47+08:00 2016-06-20T18:14:47+08:00 https://bbs.espressif.com:443/viewtopic.php?t=2312&p=7422#p7422 <![CDATA[Re: ESP8266 RTOS SDK Error Problems]]>
PaulTsai111 wrote:
我把碼改成這樣,仍會出現以下錯誤,我還是搞不懂這個問題點是?

user_main.c: In function 'set_value':
user_main.c:56:7: error: dereferencing pointer to incomplete type
ptr1->save_year=5;
^
user_main.c:57:6: error: dereferencing pointer to incomplete type
ptr2->exec_year=10;
^
make[1]: *** [.output/eagle/debug/obj/user_main.o] Error 1
make[1]: Leaving directory `/home/esp8266/ESP8266_RTOS_SDK_V1.4.0/TEST/user'
make: *** [.subdirs] Error 2
esp8266@esp8266-VirtualBox:~/ESP8266_RTOS_SDK_V1.4.0/TEST$



#include "esp_common.h"
char *s1_year = "2016";
char *s1_mon = "06";
char *s1_day = "17";
char *s1_hour = "10";
char *s1_min = "18";
char *s1_sec = "30";

char *s2_year = "2016";
char *s2_mon = "06";
char *s2_day = "17";
char *s2_hour = "12";
char *s2_min= "00";
char *s2_sec= "00";

int total_save_sec;
int total_exec_sec;
struct date1 save_date;
struct date2 exec_date;
struct save_date *ptr1;
struct exec_date *ptr2;

struct date1{
int save_sec;
int save_min;
int save_hour;
int save_day;
int save_mon;
int save_year;
};
struct date2{
int exec_sec;
int exec_min;
int exec_hour;
int exec_day;
int exec_mon;
int exec_year;
};



void Add(char *s1_year,char *s2_year)
{

printf("s1_year:",s1_year);
printf("s2_year:",s2_year);

}
void set_value(struct save_date *ptr1,struct exec_date *ptr2)
{
//save_date.save_year =
//ptr1->save_year=atoi(s1_year);
//exec_date.exec_year =
// ptr2->exec_year=atoi(s2_year);

ptr1->save_year=5;
ptr2->exec_year=10;
}
void user_init(void){

printf("SDK version:%s\n", system_get_sdk_version());
printf("user_init running ...\n");
wifi_set_opmode(NULL_MODE);
set_value(ptr1,ptr2);
//Add(s1_year,s2_year);

}

我晕啊!!!
你应该这么写:

Code:

#include "esp_common.h"
char *s1_year = "2016";
char *s1_mon = "06";
char *s1_day = "17";
char *s1_hour = "10";
char *s1_min = "18";
char *s1_sec = "30";

char *s2_year = "2016";
char *s2_mon = "06";
char *s2_day = "17";
char *s2_hour = "12";
char *s2_min= "00";
char *s2_sec= "00";

int total_save_sec;
int total_exec_sec;
struct date1{
   int save_sec;
   int save_min;
   int save_hour;
   int save_day;
   int save_mon;
   int save_year;   
};
struct date2{
   int exec_sec;
   int exec_min;
   int exec_hour;
   int exec_day;
   int exec_mon;
   int exec_year;
};
struct date1 save_date;
struct date2 exec_date;
struct date1* ptr1 = &save_date;
struct date2* ptr2 = &exec_date;


void set_value(struct date1 *ptr1,struct date2 *ptr2)
{
  //save_date.save_year = 
  //ptr1->save_year=atoi(s1_year);
  //exec_date.exec_year = 
//  ptr2->exec_year=atoi(s2_year);

    ptr1->save_year=5;
   ptr2->exec_year=10;
}
void user_init(void){

   printf("SDK version:%s\n", system_get_sdk_version());
   printf("user_init running ...\n");
   wifi_set_opmode(NULL_MODE);
   set_value(ptr1,ptr2);
   //Add(s1_year,s2_year);

}

Statistics: Posted by tobewinner — Mon Jun 20, 2016 6:14 pm


]]>
2016-06-20T17:30:15+08:00 2016-06-20T17:30:15+08:00 https://bbs.espressif.com:443/viewtopic.php?t=2312&p=7418#p7418 <![CDATA[Re: ESP8266 RTOS SDK Error Problems]]>
user_main.c: In function 'set_value':
user_main.c:56:7: error: dereferencing pointer to incomplete type
ptr1->save_year=5;
^
user_main.c:57:6: error: dereferencing pointer to incomplete type
ptr2->exec_year=10;
^
make[1]: *** [.output/eagle/debug/obj/user_main.o] Error 1
make[1]: Leaving directory `/home/esp8266/ESP8266_RTOS_SDK_V1.4.0/TEST/user'
make: *** [.subdirs] Error 2
esp8266@esp8266-VirtualBox:~/ESP8266_RTOS_SDK_V1.4.0/TEST$



#include "esp_common.h"
char *s1_year = "2016";
char *s1_mon = "06";
char *s1_day = "17";
char *s1_hour = "10";
char *s1_min = "18";
char *s1_sec = "30";

char *s2_year = "2016";
char *s2_mon = "06";
char *s2_day = "17";
char *s2_hour = "12";
char *s2_min= "00";
char *s2_sec= "00";

int total_save_sec;
int total_exec_sec;
struct date1 save_date;
struct date2 exec_date;
struct save_date *ptr1;
struct exec_date *ptr2;

struct date1{
int save_sec;
int save_min;
int save_hour;
int save_day;
int save_mon;
int save_year;
};
struct date2{
int exec_sec;
int exec_min;
int exec_hour;
int exec_day;
int exec_mon;
int exec_year;
};



void Add(char *s1_year,char *s2_year)
{

printf("s1_year:",s1_year);
printf("s2_year:",s2_year);

}
void set_value(struct save_date *ptr1,struct exec_date *ptr2)
{
//save_date.save_year =
//ptr1->save_year=atoi(s1_year);
//exec_date.exec_year =
// ptr2->exec_year=atoi(s2_year);

ptr1->save_year=5;
ptr2->exec_year=10;
}
void user_init(void){

printf("SDK version:%s\n", system_get_sdk_version());
printf("user_init running ...\n");
wifi_set_opmode(NULL_MODE);
set_value(ptr1,ptr2);
//Add(s1_year,s2_year);

}

Statistics: Posted by PaulTsai111 — Mon Jun 20, 2016 5:30 pm


]]>
2016-06-20T15:40:41+08:00 2016-06-20T15:40:41+08:00 https://bbs.espressif.com:443/viewtopic.php?t=2312&p=7414#p7414 <![CDATA[Re: ESP8266 RTOS SDK Error Problems]]>
PaulTsai111 wrote:
樂鑫您好:

我目前在編譯一個RTOS V1.4.0版SDK的Code,一直有出現一個小問題

我不知道真正問題是哪裡.能否給予一些使用上的提示或方向.

#include "esp_common.h"
char *s1_year = "2016";
char *s1_mon = "06";
char *s1_day = "17";
char *s1_hour = "10";
char *s1_min = "18";
char *s1_sec = "30";

char *s2_year = "2016";
char *s2_mon = "06";
char *s2_day = "17";
char *s2_hour = "12";
char *s2_min= "00";
char *s2_sec= "00";

int total_save_sec;
int total_exec_sec;


struct date1{
int save_sec;
int save_min;
int save_hour;
int save_day;
int save_mon;
int save_year;
};
struct date2{
int exec_sec;
int exec_min;
int exec_hour;
int exec_day;
int exec_mon;
int exec_year;
};
typedef struct date1 save_date;
typedef struct date2 exec_date;
typedef struct save_date *ptr1;
typedef struct exec_date *ptr2;


void Add(struct date1 *ptr1,struct date2 *ptr2)
{

}
void user_init(void){

printf("SDK version:%s\n", system_get_sdk_version());
printf("user_init running ...\n");
wifi_set_opmode(NULL_MODE);
Add(ptr1,ptr2);
}

user_main.c: In function 'user_init':
user_main.c:53:6: error: expected expression before 'ptr1'
Add(ptr1,ptr2);
^
user_main.c:53:6: error: too few arguments to function 'Add'
user_main.c:42:6: note: declared here
void Add(struct date1 *ptr1,struct date2 *ptr2)

这个是C的一个基本语法问题,你做了typedef struct save_date *ptr1和typedef struct exec_date *ptr2,typedef是一个类型定义的关键字,你做了typedef以后, ptr1就相当于是 struct save data*,他是一个类型名称,而你调用Add函数时,传递的是一个类型名称,这就完全不对了,就相当于,你调用add(int,float),你应该用类型名称定义变量,然后在调用函数时传递变量名

Statistics: Posted by tobewinner — Mon Jun 20, 2016 3:40 pm


]]>
2016-06-20T15:05:24+08:00 2016-06-20T15:05:24+08:00 https://bbs.espressif.com:443/viewtopic.php?t=2312&p=7412#p7412 <![CDATA[ESP8266 RTOS SDK Error Problems]]>
我目前在編譯一個RTOS V1.4.0版SDK的Code,一直有出現一個小問題

我不知道真正問題是哪裡.能否給予一些使用上的提示或方向.

#include "esp_common.h"
char *s1_year = "2016";
char *s1_mon = "06";
char *s1_day = "17";
char *s1_hour = "10";
char *s1_min = "18";
char *s1_sec = "30";

char *s2_year = "2016";
char *s2_mon = "06";
char *s2_day = "17";
char *s2_hour = "12";
char *s2_min= "00";
char *s2_sec= "00";

int total_save_sec;
int total_exec_sec;


struct date1{
int save_sec;
int save_min;
int save_hour;
int save_day;
int save_mon;
int save_year;
};
struct date2{
int exec_sec;
int exec_min;
int exec_hour;
int exec_day;
int exec_mon;
int exec_year;
};
typedef struct date1 save_date;
typedef struct date2 exec_date;
typedef struct save_date *ptr1;
typedef struct exec_date *ptr2;


void Add(struct date1 *ptr1,struct date2 *ptr2)
{

}
void user_init(void){

printf("SDK version:%s\n", system_get_sdk_version());
printf("user_init running ...\n");
wifi_set_opmode(NULL_MODE);
Add(ptr1,ptr2);
}

user_main.c: In function 'user_init':
user_main.c:53:6: error: expected expression before 'ptr1'
Add(ptr1,ptr2);
^
user_main.c:53:6: error: too few arguments to function 'Add'
user_main.c:42:6: note: declared here
void Add(struct date1 *ptr1,struct date2 *ptr2)

Statistics: Posted by PaulTsai111 — Mon Jun 20, 2016 3:05 pm


]]>