Página 1 de 1

Matriz de Char com Variaveis

MensagemEnviado: 19 Jun 2017 17:07
por GMO
Olá a todos,

O código abaixo mostra o erro: "(188) Constant Expression Requerida" quando compilado no XC8.
Essa mensagem diz que o compilador não está aceitando variável dentro da char matriz.

Código: Selecionar todos
    const char matrizA[] = {100, 70, 31, 60, 101};
    char valor;   
 
    valor = 150;

    char enviar[] = {0x17, matrizA[3], valor, null};
    putsUSART(enviar);


se pôr valores fixos funciona. como no exemplo abaixo, mas não funciona com variáveis:

Código: Selecionar todos
    const char varteste[] = {0x17, 10};
    putsUSART(varteste);


eu sei que no C18 compila perfeitamente, mas não compila do XC8

Alguém poderia ajudar ?
Grato

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 07:27
por denis
Faça um teste:
Código: Selecionar todos
const char valor;

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 11:10
por GMO
vou testar, mas o problema mesmo está no matrizA[]
obrigado

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 12:00
por andre_luis
Não sei se foi a isso que o Denis se referiu, mas tentou algo do tipo um casting para constante ?

cpp code
char enviar[] = {0x17, (const)matrizA[3], valor, null};

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 13:47
por GMO
sim tentei de tudo, o problema está na versao xc8 do compilador. no c18 funciona.
o xc8 nao aceita constantes dentro e matriz

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 14:43
por andre_luis
Tenta colocar tudo dentro de uma variavel do tipo tipo struct, e entao indexar por ponteiro. No compilador do AVR por exemplo, há uma diretiva que me garante que a alocação será inline, de modo que eu tenho a certeza de que cada elemento da estrutura está encadeado ao seguinte, bastando apenas referenciar pela sua posição.

Mas a propósito, teria como identificar exatamente em qual linha do código acima está ocorrendo o erro ? Se na declaração da variavel ou se na sua utilização dentro da função putsUSART ?

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 16:27
por GMO
a ideia da struct é boa, vou tentar.

a linha que mostra o erro é na compilação do char abaixo:
char enviar[] = {0x17, matrizA[3], valor, null};

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 20:24
por andre_luis
Já experimentou substituir o array dentro do outro por 3 caracteres quaisquer, sendo que voce os iria superpor com outro valor antes de enviar ?

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 21:01
por eletroinf
Veja no manual dele tem algumas dicas que eu achei procurando por 'const' no find do leitor de pdf.
Na página 19 tem um exemplo:

const char myName[] = "Bj\370rk\n";

Na página 27:
const char keys[] __at(124) = { ’r’, ’s’, ’u’, ’d’};

Neste caso, especificando o endereço ao que me parece. Veja se ajuda.

Link do manual:
http://ww1.microchip.com/downloads/en/D ... 02053G.pdf

Re: Matriz de Char com Variaveis

MensagemEnviado: 20 Jun 2017 22:13
por GMO
ja tentei sim, na verdade o xc8 nao aceita nenhum tipo de variavel dentro de um array

eu baixei o manual do xc8 que o nosso amigo deixou no link e vi que tem bastante coisa interessante de constantes lá.