В определении функции может отсутствовать статическое ключевое слово в объявлении функции?

Я хочу иметь статическую функцию, которую я объявляю в моем файле .c, прежде чем определять ее:

//file a.c version 1
static int foo();
...
static int foo()
{
...
}

Однако кажется, что я могу оставить static ключевое слово вне определения функции, и я не получаю предупреждений компилятора ... например,

//file a.c version 2
static int foo();
...
int foo()
{
...
}

Правильно ли я предполагаю, что эти две формы абсолютно одинаковы?
Если да, то почему это несоответствие допускается и какую форму мне следует использовать?

11
задан jschmier 10 March 2011 в 15:08
поделиться