В тот момент, когда вы используете processCMD()
, вы не объявили прототип для него, поэтому он получает по умолчанию.
Тот факт, что вы не объявили его, вызывает первую ошибку.
Тот факт, что ваше фактическое определение конфликтует с созданным по умолчанию определением, потому что вы не объявили его, является причиной вашей второй ошибки.
Решение состоит в том, чтобы либо определить функцию перед использованием:
void processCMD(void) {
blah blah blah
}
void main (char string[]) { // not really a good definition for main, by the way.
strcpy(command_E,string);
processCMD();
}
или предоставьте прототип перед использованием:
void processCMD(void);
void main (char string[]) { // not really a good definition for main, by the way.
strcpy(command_E,string);
processCMD();
}
void processCMD(void) {
blah blah blah
}
Что касается объявления main
, две канонические формы:
int main (void);
int main (int argc, char *argv[]); // or char **argv.
Другие разрешены стандартом (реализация определена), но эти два требуются (по крайней мере, для размещенных реализаций - автономные реализации, такие как встроенные системы или операционные системы, вполне могут делать все, что хотят).