Если вы не объявляете функцию и она появляется только после вызова, она автоматически считается равной int
, поэтому в вашем случае вы не объявляли
void my_print (char *);
void my_print2 (char *);
перед вамивызовите его в main, поэтому компилятор предполагает, что есть функции, прототипы которых int my_print2 (char *);
и int my_print2 (char *);
, и вы не можете иметь две функции с одинаковым прототипом, кроме возвращаемого типа, поэтому вы получаете ошибку conflicting types
.
Как предложил Брайан, объявите эти два метода перед main.