int main(void) { printf("%s", foo()); printf("%s", foo2());
return 0; }
output: c:\Documents and Settings\Administrator\Dokumenter\cpp\skabeloner\c>make gcc -c "main.c" -s main.c: In function `foo2': main.c:15: warning: function returns address of local variable gcc -o "main.exe" "main.o" -s
c:\Documents and Settings\Administrator\Dokumenter\cpp\skabeloner\c>main hejsa verden P "
foo2 går galt fordi der returneres en adresse som går ud af scope (som compileren også fortæller) - lad være med at bruge metoden efter det princip!
void do_sql(char *sqlout, char *query) { //gør sql ting.. det er ikke et problem strspy(sqlout, variabelDerIndeholderSqlReturnering); }
det giver en fejl..
server.c:176: warning: type mismatch with previous implicit declaration server.c:41: warning: previous implicit declaration of `do_sql' server.c:176: warning: `do_sql' was previously implicitly declared to return `int'
Du bruger do_sql (i main, linie 41) før du erklære den (under main, linie 176), hvilket betyder at compileren antager at do_sql er erklæret som:
int do_sql(void)
og ikke som du har
void do_sql(char *buffer) // i linie 176
løsning, indsæt
void do_sql(char *buffer);
før main, eller lad være med at skrive main øverst, i min personlig mening skal main altid stå som det sidste i kildefilen. Og som soreno skriver vær sikker på at du har en buffer med nok plads allockeret før du forsøger at bruge det. For ikke at tale om at du burde lave en masse checks om du risikere buffer overrun, dvs. skrive mere ind i buffer end der er plads til (med mindre du beviser at der ikke kan forekomme buffer overrun i dit program).
okay, det havde jeg så ingen anelse om :-/ men tak
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.