Logo Hardware.com.br
AnalystWodc
AnalystWodc Novo Membro Registrado
2 Mensagens 0 Curtidas

Declarando variavel dentro do for (Linguagem C - Compilador GCC - Plat. Windows)

#1 Por AnalystWodc 30/08/2015 - 18:48
Boa noite galera!

Pessoal, estou com uma duvida no meu código em C.
Quando declaro uma variável dentro do laço for, gera um erro no GCC.
O código que estou trabalhando não é esse, porém, a utilização do 'for' é a mesma, segue:

[code=C]
#include

int main()
{
for (int i = 1; i <= 3; i++)
{
printf("\nHi!\n");
}
printf("Fim de repetição!");
}
[/code]

Ao compilar o código acima, é informado a seguinte mensagem pelo compilador:
"programa.c: In function 'main':
programa.c:25:2 error: 'for' loop initial declarations are only allowed in C99 mode
for (int i = 1; i <= 3; i++)
^
programa.c:25:2 note: use option -std=c99 or -std=gnu99 to compile your code"

Encontrei o procedimento de usar a opção std=c99 no code blocks, mas não uso essa IDE.

Desenvolvo no Sublime ou NotePad++ e compilo no GCC.

Se eu declarar a variável antes, o programa compila e executa perfeitamente.
Exemplo:
[code=C]
#include

int main()
{
int i;

for (i = 1; i <= 3; i++)
{
printf("\nHi!\n");
}
printf("Fim de repetição!");
}
[/code]


Alguém sabe como posso declarar uma variável dentro do laço for e não gerar esse erro?

Valew fellows!
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
30/08/2015 - 23:13
A resposta já foi entregue pelo compilador:

"note: use option -std=c99 or -std=gnu99 to compile your code"


Ou seja, se você quer mesmo fugir do padrão estabelecido pelo compilador padrão, deve adicionar o recurso para ele fazer isto funcionar.
Em "C" o padrão é este mesmo: A variável precisa ser declarada fora do escopo do loop.
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
AnalystWodc
AnalystWodc Novo Membro Registrado
2 Mensagens 0 Curtidas
#4 Por AnalystWodc
31/08/2015 - 00:04
Valew esquiloesperto!

Você me deu um direcionamento e consegui realizar uma pesquisa mais refinada.

Vi que pra eu compilar daquele jeito, terei que escrever: "gcc -std=c99 programa.c" todas as vezes que eu for compilar, e irá me gerar um arquivo de extensão .out igual no Mac. Pelo menos é o que dizia no fórum StackOverFloooooow.

Vou deixar assim mesmo, por enquanto não é nada que me incomode, ou que atrapalhe.

Mas obrigado por sua ajuda.

@Fábio novato, obrigado por sua contribuição também. O "f" foi um erro de digitação meu, quando eu escrevi o post, mas bem observado.

Obrigado.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal