C 函数不 return 列出值
C function don't return list values
不知道为什么,但我的函数不需要 return 值。
这就是我使用此功能的方式:
struct element_listy *pakiet = NULL, *wsk = NULL;
pakiet = dodaj_ramke(pakiet, &frame);
这是函数:
struct element_listy* dodaj_ramke (struct element_listy *wskazanyelement, struct ramka *ramka){
struct element_listy *wsk, *nowy;
if (wskazanyelement == NULL) {
wskazanyelement = (struct element_listy*)malloc(sizeof(struct element_listy)); //rezerwacja pamięci dla listy
wskazanyelement->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie pamieci dla elementu listy
wskazanyelement->first = wskazanyelement; //Pierwszy element to lista obecna
wskazanyelement->next = NULL; // Drugi element nie istnieje
wskazanyelement->previous = wskazanyelement; //wskazanyelement->first->ramka; // poprzedni element to wskazanie na liste obecną
memcpy(wskazanyelement->first->ramka, ramka, sizeof(struct ramka)); //skopiowanie pod pierwszy element listy
return wskazanyelement; //zwróć liste
} else {
wsk = wskazanyelement; //pomocnicza lista dla listy
while (wsk->next != NULL) { //przechodzimy na koniec listy
wsk = wsk->next;
}
nowy = (struct element_listy*)malloc(sizeof(struct element_listy)); //lookowanie pamieci dla listy
nowy->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie wskazanie na elementy listy
memcpy(nowy->ramka, ramka, sizeof(struct ramka)); //kopiowanie pod element listy
nowy->first = wskazanyelement; //pierwszy element pomocniczej to pobrana ramka
wsk->next = nowy; //następny element
wsk->previous = wsk;
return wskazanyelement;
}
}
在调试器中,我看到 returned wskazanyelement 具有从 ramka 复制的值。但是当函数结束并且我进入下一步时 pakiet 是空的。为什么?我return在函数末尾复制了数据。
我解决了这个问题。这不是指针的问题。就像我说的那样,我对 gcc 有疑问。我必须降级这个因为升级开始问题。
我是gcc6。我被删除了:
aptitude remove gcc-6
但是这也删除了主 gcc,所以我必须重新定义它
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
清理项目并重建它后,我的功能立即开始工作。
不知道为什么,但我的函数不需要 return 值。 这就是我使用此功能的方式:
struct element_listy *pakiet = NULL, *wsk = NULL;
pakiet = dodaj_ramke(pakiet, &frame);
这是函数:
struct element_listy* dodaj_ramke (struct element_listy *wskazanyelement, struct ramka *ramka){
struct element_listy *wsk, *nowy;
if (wskazanyelement == NULL) {
wskazanyelement = (struct element_listy*)malloc(sizeof(struct element_listy)); //rezerwacja pamięci dla listy
wskazanyelement->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie pamieci dla elementu listy
wskazanyelement->first = wskazanyelement; //Pierwszy element to lista obecna
wskazanyelement->next = NULL; // Drugi element nie istnieje
wskazanyelement->previous = wskazanyelement; //wskazanyelement->first->ramka; // poprzedni element to wskazanie na liste obecną
memcpy(wskazanyelement->first->ramka, ramka, sizeof(struct ramka)); //skopiowanie pod pierwszy element listy
return wskazanyelement; //zwróć liste
} else {
wsk = wskazanyelement; //pomocnicza lista dla listy
while (wsk->next != NULL) { //przechodzimy na koniec listy
wsk = wsk->next;
}
nowy = (struct element_listy*)malloc(sizeof(struct element_listy)); //lookowanie pamieci dla listy
nowy->ramka=(struct ramka*)malloc(sizeof(struct ramka)); //zalookowanie wskazanie na elementy listy
memcpy(nowy->ramka, ramka, sizeof(struct ramka)); //kopiowanie pod element listy
nowy->first = wskazanyelement; //pierwszy element pomocniczej to pobrana ramka
wsk->next = nowy; //następny element
wsk->previous = wsk;
return wskazanyelement;
}
}
在调试器中,我看到 returned wskazanyelement 具有从 ramka 复制的值。但是当函数结束并且我进入下一步时 pakiet 是空的。为什么?我return在函数末尾复制了数据。
我解决了这个问题。这不是指针的问题。就像我说的那样,我对 gcc 有疑问。我必须降级这个因为升级开始问题。 我是gcc6。我被删除了:
aptitude remove gcc-6
但是这也删除了主 gcc,所以我必须重新定义它
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
清理项目并重建它后,我的功能立即开始工作。