Dúvidas em uma definição

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

Dúvidas em uma definição

Mensagempor chrdcv » 01 Ago 2013 11:38

Cambada, estou com uma dúvida aqui quanto a esta definição:

Código: Selecionar todos
#define SAMPLE_RATE   200   /* Sample rate in Hz. */
#define MS_PER_SAMPLE   ( (double) 1000/ (double) SAMPLE_RATE)
#define MS10   ((int) (10/ MS_PER_SAMPLE + 0.5))
#define MS25   ((int) (25/MS_PER_SAMPLE + 0.5))
#define DERIV_LENGTH   MS10
#define LPBUFFER_LGTH ((int) (2*MS25))
#define HPBUFFER_LGTH MS125


Em outra seção do código, onde um array é declarado e definido:
Código: Selecionar todos
static int data[LPBUFFER_LGTH], ptr = 0 ;


Uma mensagem de erro é dada ao compilar o código, dizendo algo como: impossível alocar (em tempo de compilação o array: "static int data" devido o índice não ser uma constante!

Oka, sei que macros são raízes de todo o bem, mas o cast presente nas definições apenas serve para garantir o truncamente, correto? O mais engraçado é que esse código era compilado normalmente por outros compiladores, no gcc não passa! Existe alguma diretiva de compilação que possa ser passada no Makefile garantindo a compilação?
Seu Madruga: "O trabalho não é ruim, ruim é ter que trabalhar"
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13

Re: Dúvidas em uma definição

Mensagempor styg » 01 Ago 2013 19:40

ch, não sei o que te dizer, é F*** estar tanto tempo sem programar, lembro que já tive problemas assim, mas não lembro muito de como resolvi (mas resolvi).

bom, considerando que cada compilador tem suas firulas, eu tentaria isolar o problema, por exemplo:
- todos os defines estão eu mesmo arquivo
- a definição do LPBUFFER_LGTH bo código é feita numa posição anterior ao seu uso na declaração da array
- declara a matriz separado (em outra linha) daquele ponteiro
- precisa mesmo ser static
- tenta declarar a matriz com um comprimento fixo e vê se compila p ex. [5]

desculpa pela simploriedade da "ajuda".
Lucas
Avatar do usuário
styg
Word
 
Mensagens: 799
Registrado em: 16 Out 2006 08:24
Localização: Floripa abaixo de zero.

Re: Dúvidas em uma definição

Mensagempor andre_luis » 01 Ago 2013 20:12

Acho que não consegue inicializar um buffer durante a sua criação.
Tenta separar :

Código: Selecionar todos
static int data[LPBUFFER_LGTH] ;
static int ptr = 0 ;



+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: Dúvidas em uma definição

Mensagempor barboza » 01 Ago 2013 23:39

andre_teprom escreveu:Acho que não consegue inicializar um buffer durante a sua criação.
Tenta separar :

Código: Selecionar todos
static int data[LPBUFFER_LGTH] ;
static int ptr = 0 ;



+++


Também acredito nessa solução...

Apesar dele não tentar inicializar o buffer no código original, mas se quisesse (0 é o valor de inicialização neste caso):

Código: Selecionar todos
static int data[LPBUFFER_LGTH]  = {0, };


Mas acho que isso não funciona com variáveis estáticas.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar


Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x