Jump to content
killezio

Illegal instruction: 4

Recommended Posts

killezio

Este é o erro que me dá quando eu compilo o código:

void fillPath(short int *path,short int costumer){
short int e;
for ( e = 0;e < costumer;e++)
    path[e] = 1;
}
begin(){
(...)
short int path[flavor];
fillPath(path,costumer);
}

No entanto quando mudo o argumento do fillpath para &costumer e o recebo como apontador, tudo funciona bem. alguem me sabe explicar que erro é este? pelo que estive a ver na internet... nao percebi

PS: o título é a mensagem de erro completa :P

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

void fillPath(short int *path,
             short int costumer){ // <- isto é um valor
}
begin(){
(...)
short int path[flavor];            // <-- isto é um array
fillPath(path,costumer);
}

ps : quando se apresenta um problema com mensagem de erro do compilador, é de bom tom apresentar toda a mensagem

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
killezio

void fillPath(short int *path,
		  short int costumer){ // <- isto é um valor
}
begin(){
(...)
short int path[flavor];			// <-- isto é um array
fillPath(path,costumer);
}

ps : quando se apresenta um problema com mensagem de erro do compilador, é de bom tom apresentar toda a mensagem

já editei a mensagem. mas o "costumer" é uma variável

Share this post


Link to post
Share on other sites
killezio

gcc -o resposta2 resposta2.c

Ps.: o "-o" é um hífen e a letra "o"

Edited by killezio

Share this post


Link to post
Share on other sites
HappyHippyHippo

isso é o gcc e como tal tenho a certeza absoluta que terás mais informação a apresentar do que Illegal instruction: 4


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
pwseo

killezio,

O GCC que instalaste foi compilado para ser compatível com o sistema que tens? Estás a compilar com algum tipo de optimização? (embora tenhas mostrado a linha de comandos que indica que não, quero ter a certeza)

Share this post


Link to post
Share on other sites
killezio

Juro que é a única mensagem que o compilador dá,hippo. O mais estranho é que quando faço "path[e] = 0" em vez de "path[e] = 1" o erro passa a "floating point: 4" (acho que esse é o nome) que significa que estou a tentar aceder a uma posicao de memoria que nao pertence ao programa.

EDIT: o erro chama-se "Segmentation fault";

Edited by killezio

Share this post


Link to post
Share on other sites
pwseo

killezio,

Esse erro aparece-te quando compilas ou quando executas o executável criado?

Que sistema operativo estás a utilizar? E que versão do GCC?

Share this post


Link to post
Share on other sites
killezio

o erro acontece quando compilo. o sistema operativo é o último do mac. suponho que a versão do gcc seja a última. não sei, nunca tive que mexer nisso porque funciona no terminal do mac. Mas se este informação não for suficiente eu procuro isso

e eu inicio a variável <costumer> simplesmente assim na função begin

short int costumer;

Share this post


Link to post
Share on other sites
HappyHippyHippo

então vamos fazer assim.

fazes um print screen da console a apresentar a linha de compilação assim como toda a informação que te é apresentada.

depois metes em algum serviço gratuito de alojamento de imagens e colocas aqui o link para se poder ver que realmente o gcc não dá informação nenhuma


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
killezio

desculpa, quando compila não dá erro nenhum, apenas o usual warning do main que não afeta nada. Só dá esse erro quando eu executo o programa

http://prntscr.com/9y4bpo

já tinha visto isso antes de perguntar aqui, mas não faz sentido. aí dizem que tem haver com estar a usar comandos ou binários de uma versão diferente do mac cuja a atual já não conhece como tratá-los. mas aqui,neste programa, não estou a fazer nada de complicado

Share this post


Link to post
Share on other sites
HappyHippyHippo

vais compilar com este comando:

gcc -Wall -pedantic -Werror -o resposta2 resposta2.c


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
killezio

hum agora já não me dá esse erro. na altura tinha a certeza que era por causa dessa parte do código mas como agora experimentei outra vez fazer apenas um programa com essa amostra de código já não me acontece nada de mal... infelizmente não vou conseguir saber do que se tratava porque acabei por recomeçar a fazer o programa e já não tenho o código que tinha na altura

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.