【发布时间】:2016-02-25 00:44:20
【问题描述】:
#include <stdio.h>
#include <string.h>
int myprint(char_array){
char mystring[80];
strcat(mystring, "\n");
printf("%s", mystring);
return 0;
}
int main(int argc, char** argv){
int count = 5;
char letter = 'c';
printf("decimal: %d, char: %c\n", count, letter);
myprint("sup");
return 0;
}
我在编译时收到警告:
cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ compile basics.c basics
basics.c: In function ‘myprint’:
basics.c:4:5: warning: type of ‘char_array’ defaults to ‘int’
int myprint(char_array){
^
它可以编译,但我的 myprint 函数不起作用:
cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ ./basics
decimal: 5, char: c
我看到了这个答案warning: return type defaults to ‘int’ [-Wreturn-type],但不适用于我,因为我确实声明了int main(...)
我还看到了这个函数声明:
return_type function_name( parameter list ) {
body of the function
}
对于myprint,我声明接受int 并返回0。这个警告是什么意思,为什么我的功能不起作用?谢谢
回答:
void myprint(char mystring[]){
strcat(mystring, "\n");
printf("%s", mystring);
}
使警告静音,但导致Segmentation fault (core dumped)
改成
void myprint(char[] mystring){
strcat(mystring, "\n");
printf("%s", mystring);
}
让事情变得更糟:
cchilders:~/projects/buildyourownlisp_in_C/ch3 [master]$ cc -std=c99 -Wall basics.c -o basics
basics.c:4:21: error: expected ‘;’, ‘,’ or ‘)’ before ‘mystring’
void myprint(char[] mystring;){
^
basics.c: In function ‘main’:
basics.c:15:5: warning: implicit declaration of function ‘myprint’ [-Wimplicit-function-declaration]
myprint("sup");
^
我也试过
void myprint(char[] mystring;){...
和
void myprint(char[] mystring,){...
【问题讨论】:
-
里面有个任性的分号:void myprint(char[] mystring;){
标签: c function-parameter