Não, não é protótipo, pelo que parece o erro está entre os parenteses....
Código que funcionou:
#include <stdio.h>
int troca (int &i, int &j)
{
int tmp = i;
i = j;
j = tmp;
return tmp;
}
int main (void)
{
int n, k;
printf ("Introduza dois numeros: "); scanf ("%d%d", &n, &k);
printf ("Antes da troca: n=%d k=%d\n", n, k);
printf ("%d\n", troca (n, k));
printf ("Depois da troca: n=%d k=%d", n, k);
}
Já nesse da erro de compilação:
#include <stdio.h>
#include <stdlib.h>
int troca (int &i, int &j)
{
int tmp = i;
i = j;
j = tmp;
return tmp;
}
int main (void){
FILE *file;
float v[10], x;
int i , n;
for (i=0; i<10; i++){
printf("Introd. o %d° N°: ", i+1)/
scanf("%f", &v[i]);
}
if ((file = fopen("DADOS.DAT", "w+b")) == NULL){
printf ("Imp. criar o arq. temp.dat\n\n");
exit(1);
}
if ((fwrite(v, sizeof (float), 10, file)) != 10){
fprintf (stderr, "não foi possivel escrever todos os elementos!!\n");
exit(2);
}
printf("Qual a ordem do numero que pretende ver 1..10? "); scanf("%d", &n);
fseek(file, (float) (n-1)*sizeof(float), SEEK_SET);
fread(&x, sizeof (float), 1, file);
printf ("O %2d° n° introduzido foi: %.2f\n", n, x);
rewind(file);
fread(&x, sizeof (float), 1, file);
printf ("O 1° n° introduzido foi: %.2f\n", x);
fseek (file, -(long) sizeof(float), SEEK_END);
fread(&x, sizeof(float), 1, file);
printf ("O 10° n° introduzido foi: %.2f\n", x);
fclose(file);
}
como você pode ver a função troca é a mesma nos dois códigos, porem somente um retorna um erro de compilação...
consegui descobrir o porque disso... o primeiro arquivo foi salvo como prog0901.cpp, enquanto o segundo foi salvo como prog1010.c ... Aparentemente em C++ é possivel utilizar o '&' em funções enquanto em C isso não é possivel (se eu não estiver errado foi isso que aconteceu...).