Динамические маршруты с Rails 3

Что касается типа параметра, здесь уже есть правильные ответы, но если вы хотите услышать его от компилятора, вы можете попробовать добавить несколько флагов (флаги всегда всегда являются хорошей идеей).

компиляция вашей программы используя gcc foo.c -Wextra, я получаю:

foo.c: In function ‘func’:
foo.c:5:5: warning: type of ‘param’ defaults to ‘int’ [-Wmissing-parameter-type]

странно -Wextra не понимает этого для clang (по какой-либо причине он не распознает -Wmissing-parameter-type, возможно, для исторических, упомянутых выше) но -pedantic делает:

foo.c:5:10: warning: parameter 'param' was not declared, 
defaulting to type 'int' [-pedantic]
int func(param)
         ^
1 warning generated.

И для проблемы с прототипом, как сказано выше int func(), относится к произвольным параметрам, если вы явно не определяете его как int func(void), который затем даст вам ошибки, как ожидалось:

foo.c: In function ‘func’:
foo.c:6:1: error: number of arguments doesn’t match prototype
foo.c:3:5: error: prototype declaration
foo.c: In function ‘main’:
foo.c:12:5: error: too many arguments to function ‘func’
foo.c:5:5: note: declared here

или в clang как:

foo.c:5:5: error: conflicting types for 'func'
int func(param)
    ^
foo.c:3:5: note: previous declaration is here
int func(void);
    ^
foo.c:12:20: error: too many arguments to function call, expected 0, have 1
    int bla = func(10);
              ~~~~ ^~
foo.c:3:1: note: 'func' declared here
int func(void);
^
2 errors generated.
13
задан Michael Berkowski 4 February 2013 в 00:23
поделиться