ESP8266 RTOS SDK Error Problems
-
- Posts: 48
- Joined: Wed May 04, 2016 7:32 pm
ESP8266 RTOS SDK Error Problems
Postby PaulTsai111 » Mon Jun 20, 2016 3:05 pm
樂鑫您好:
我目前在編譯一個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)
我目前在編譯一個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)
-
- Posts: 45
- Joined: Tue Jan 19, 2016 2:39 pm
Re: ESP8266 RTOS SDK Error Problems
Postby tobewinner » Mon Jun 20, 2016 3:40 pm
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),你应该用类型名称定义变量,然后在调用函数时传递变量名
-
- Posts: 48
- Joined: Wed May 04, 2016 7:32 pm
Re: ESP8266 RTOS SDK Error Problems
Postby PaulTsai111 » Mon Jun 20, 2016 5:30 pm
我把碼改成這樣,仍會出現以下錯誤,我還是搞不懂這個問題點是?
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);
}
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);
}
-
- Posts: 45
- Joined: Tue Jan 19, 2016 2:39 pm
Re: ESP8266 RTOS SDK Error Problems
Postby tobewinner » Mon Jun 20, 2016 6:14 pm
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: Select all
#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);
}
Who is online
Users browsing this forum: No registered users and 13 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.