реклама на сайте
подробности

 
 
> Злой код
uragan90
сообщение Dec 2 2013, 16:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



Здравствуйте уважаемые!
Написал такой вот код в keil 4.73
А он не компилируется не в какую, где может быть косяк???

Код
#include <math.h>

unsigned int Massine[8000];

typedef union{
int ch1_ch2;
char ch[2];    
}chn;

void  sinetest(void)
{    
    float ampvol_ch1  = 65;  
    float period_ch1   = 20;
//-----------------------------------------
    float ampvol_ch2  = 45;  
    float period_ch2   = 30;  
//-----------------------------------------  
    float pi   = 3.14;
    int index  = 8000;
    int i      = 0;
//-----------------------------------------
    chn channel;
    
      for(i=0; i<index; i++)
    {
            
      channel.ch[0] = 128 + (ampvol_ch1*sin(i*pi*period_ch1));  
      channel.ch[1] = 128 + (ampvol_ch2*sin(i*pi*period_ch2));
      Massine[i]      = channel.ch1_ch2;             
    }
}


Интересует правильность синтексиса!
А то я в майне вызываю эту функцию чтоб она заполнила массив, а код не компилируется!
Но ведь с виду ошибок не вижу
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uragan90
сообщение Dec 2 2013, 16:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 248
Регистрация: 2-02-09
Из: Тверь
Пользователь №: 44 309



От этой ошибки удалось иавится!
Теперь ругается на обьявление
chn channel;
пишет что ранее обьявлен мог быть...
Да что за фигня то?

union
в кейле так и не удалось попробовать!
Go to the top of the page
 
+Quote Post
winipuh
сообщение Dec 2 2013, 17:29
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 127
Регистрация: 31-10-12
Пользователь №: 74 189



Цитата(uragan90 @ Dec 2 2013, 20:59) *
Теперь ругается на обьявление chn channel; пишет что ранее обьявлен мог быть...

А Вы приведите тут варнинг как он есть, на английском.

Попутно
  1. А Вы там с union не перемудрили? Надо то и всего Massine[i] = ch[0] | ((unsigned int)ch[1] << 8) ...
  2. Зачем используете int для Massine, если на каждый сэмпл используется только 2 байта (по байту на канал).
    Оставшиеся 4000 байт врагу подарите? sm.gif
  3. float pi = 3.14 — это не наш метод! Про дефайн "M_PI" в хедере math.h знаете?
  4. Как насчет такого кода (ver.2):
    Код
    #include <stdio.h>
    #include <stdlib.h>
    #define _USE_MATH_DEFINES  // это нужно только для VisualStudio
    #include <math.h>

    typedef union {
        unsigned short data;
        struct {
            unsigned char left;
            unsigned char right;
        } chan;
    } stereo_sample_t;

    struct sine_param {
        float amp_vol;
        float period;
    };

    static unsigned char get_sine_sample(const struct sine_param *p, int i) {
        return 128u + (unsigned char)(p->amp_vol * sin(M_PI * p->period * i));
    }

    static void sine_test(stereo_sample_t buf[], int num_samples) {
        struct sine_param left_ch = {65, 20};
        struct sine_param right_ch = {45, 30};
        int i;

        for(i = 0; i < num_samples; i++) {
            buf[i].chan.left = get_sine_sample(&left_ch, i);
            buf[i].chan.right = get_sine_sample(&right_ch, i);
        }
    }


    int main(void) {
        stereo_sample_t Massine[8000];

        sine_test(Massine, sizeof(Massine) / sizeof(Massine[0]));
        return 0;
    }
    Так вот немного приятнее...


Сообщение отредактировал winipuh - Dec 2 2013, 20:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uragan90   Злой код   Dec 2 2013, 16:02
- - toweroff   Что за ошибка? Компиляции, сборки?   Dec 2 2013, 16:05
- - uragan90   Пишет что не нравится ему что float с int мешаю ил...   Dec 2 2013, 16:08
|- - andron86   Цитата(uragan90 @ Dec 2 2013, 17:08) Пише...   Dec 2 2013, 16:13
|- - uragan90   Спасибо!!! Ну может и перемудрил конеч...   Dec 2 2013, 18:17
- - uragan90   winipuh Спасибо вам огромное!!!   Dec 3 2013, 12:39
- - uragan90   Написал для теста в Dev-C++ код который бы должен ...   Dec 3 2013, 13:50
|- - winipuh   Цитата(uragan90 @ Dec 3 2013, 17:50) В фа...   Dec 3 2013, 15:49
- - uragan90   Понемемаете мне нужна функция тестовая которая в м...   Dec 3 2013, 16:11
|- - winipuh   Без обид, но... Вам сколько лет? Цитата(uragan9...   Dec 3 2013, 16:24
|- - uragan90   winipuh Да ничего страшного! Обзывайтесь :-) Я...   Dec 3 2013, 16:57
|- - toweroff   Цитата(winipuh @ Dec 3 2013, 20:24) Без о...   Dec 3 2013, 17:00
- - uragan90   toweroff Во дворе весь день стучат Двое стрижены...   Dec 3 2013, 18:04
- - toweroff   Я задал один вопрос - кто выдал ошибку. На него н...   Dec 3 2013, 20:32


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 09:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016