Pergunta

while(((long)(1000*ratio*((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

A linha acima está gerando o seguinte erro: "Erro de sintaxe antes

Por que esse erro chegando?

Eu uso Mingw32 para o desenvolvimento (compilador GCC).

Obrigado ...

Foi útil?

Solução

Um parêntese está faltando à esquerda. Isto irá analisar:

while ((((long)(1000*ratio*((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

Para além da questão de análise:

  • Use um editor que destaca parênteses harmonização:)
  • Por que não calcular o tempo restante até que os dados taxa de leitura caiu bastante, e chamada sleep ()? Isso é mais agradável no processador.

Além disso, considerando o uso do operador%, você pode querer ter o parêntese extras colocados como assim (estou assumindo relação não é um inteiro), porque o operador% requer inteiro operandos :

while (((long)(1000*ratio*(((long)clock()-(long)t0))%100)/1000)<Data_Read_Rate);

(Mas isso faz sentido em um nível semântico? Pique-lo!)

Outras dicas

Você tem muitos parêntese de fechamento.

Além disso, sua lógica é tão longa e profunda que eu não me importo de tentar descobrir o que o código deve ser. Só que destaques vim o último ) em vermelho, o que significa que é incompatível. Eu sugiro que você considerar o uso de algumas variáveis ??intermediárias e simplificando a lógica dessa afirmação, espalhando-a para fora em algumas linhas, em vez de um.

Como o compilador fica tão confuso sobre o seu código como o leitor humano? [Tremor]

Os espaços e quebras de linha são de graça, e adicionar muito bem para a legibilidade.

    while ( ( (long)( 1000 * ratio * ( (long)clock() - (long)t0 ) ) % 100 ) / 1000 ) < Data_Read_Rate );

Você poderia acabar com os (longas) moldes de relógio () e T0, também (assumindo que ambos estão int). Fazendo-os antes de subtração não vai mudar o resultado. Para fazer todo o cálculo no longa, que seria suficiente para tornar um dos argumentos longos - e o caminho mais curto para fazer isso está lançando o literal de 1000:

while ( ( ( 1000l * ratio * ( clock() - t0 ) ) % 100 ) / 1000 ) < Data_Read_Rate );

Hmmm ... espera. Você toma alguma coisa, Módulo 100 (produzindo um número entre 0 e 99), e depois dividir por 1000? O seu resultado é sempre 0 ...

Ah, e você se esqueceu de corresponder ao seu parêntese. ; -)

Como mencionado anteriormente seus parênteses são mis-pareados.

Com expressões como este é quase sempre melhor trabalhar com algumas variáveis ??intercalares para simplificar o comunicado. No entanto as seguintes dicas podem ajudar.

  1. Conte os parênteses adicionando 1 para cada "(" e subtraindo 1 para cada ")" você deve sempre chegar a uma resposta de meios resposta positiva 0. A que você tem um extra "(" uma resposta negativa que você tem um extra ")".
  2. reformatar a expressão para torná-lo mais fácil de ler, possivelmente quebrando-o em várias linhas, com cada declaração lógica em uma linha.
  3. Use uma sintaxe destacando código-editor. Isso deve mostrar o mis-jogo para você

Está faltando um parênteses no lado esquerdo.

Você tem muitos Abertura e parêntese de fechamento. Se você estiver usando o Visual Studio, ele irá ajudá-lo para coincidir com a abertura e fechamento parêntese / cinta usando Ctrl + '[' e Ctrl + ']' chave prensas

Outra sugestão é o grupo e dividi-lo em várias linhas, mantendo a legibilidade de expressões. Além disso, tente dar espaço entre parêntesis posterior por para agrupar logicamente as expressões.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top