Вопросы по С/С++ (СИ)
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
принципиальным было предложение заменить длиннющий и не модифицируемый оператор ИЛИ на аналитическое выражение, которое определит длину формируемой строки, все прочие идеи уже носят характер оформительский.
но я хотел еще обратить внимание на то, что лучше всего уйти от "магических чисел", сделав код по-настоящему универсальным, что и попытался показать в своём примере.
но я хотел еще обратить внимание на то, что лучше всего уйти от "магических чисел", сделав код по-настоящему универсальным, что и попытался показать в своём примере.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
for(int i=0;i<sizeof(table);i++) int r=!(i%32) ? fprintf(p_file,"0x%02X, ",table[i],"\n"):fprintf(p_file,"0x%02X, ",table[i]);- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
тогда уж такпросто КОТ писал(а):Можно попробовать в одну строчку
Код: Выделить всё
for(int i=-1; ++i<sizeof(table); fprintf(p_file,"0x%02X,%с",table[i], i%NUM_COUNT ? ' ' : '\n'));еще чуть-чуть, и будет, как у меня в подписи
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
при i=0 происходит перевод строкиARV писал(а):FreshMan писал(а):как можна сократить данный код ?Код: Выделить всё
#define NUM_COUNT 32 int i = 0; while(i < sizeof(sin_table)){ fprintf( p_file, "0x%02X, ", sin_table[i] ); if(!(i % NUM_COUNT)) fprintf(p_file, "\n"); i++; }
Tell Me The Truth
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Ну... тут проще нулевую выборку скормить в файл вручную. А потом вписать наш шедевр, начиная с первого:
Код: Выделить всё
for(int i=0; ++i<sizeof(table); fprintf(p_file,"0x%02X,%c", table[i], i%NUM_COUNT ? ' ' : '\n'));- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
я бы не сильно гнался за краткостью - всё хорошо в меру.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
У меня какой-то пунктик на этом. Перед защитой курсовой последние два дня только и делал, что сидел да код сокращал. В итоге на страничку А4 влез с запасом, хотя там была работа с графикой и клеточные автоматы. 
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
меня тут упрекают за нравоучения... но что делать, если моё мнение как-то идет вразрез с мнением других, а высказаться хочется? уж простите...
я тут прочитал, что есть "спортивное программирование", есть конкурсы на самый "красивый" код (там форматируют текст в виде всяких картинок), на самый короткий, на самый странный (см. мою подпись)... но какое отношение всё это имеет к нормальной жизни?
да, как особый вид искусства - согласен, имеет право на существование. но при постоянном применении это уже смахивает на какое-то отклонение... я стараюсь не злоупотреблять этим.
я тут прочитал, что есть "спортивное программирование", есть конкурсы на самый "красивый" код (там форматируют текст в виде всяких картинок), на самый короткий, на самый странный (см. мою подпись)... но какое отношение всё это имеет к нормальной жизни?
да, как особый вид искусства - согласен, имеет право на существование. но при постоянном применении это уже смахивает на какое-то отклонение... я стараюсь не злоупотреблять этим.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Вопросы по С/С++ (СИ)
интересует мнение опытных писателей кода относительно #pragma once
давно интересовался вопросом повторного включения модуля в многомодульном проэкте
тоесть
в главном модуле main усть #include <avr/io.h>
но он также нужен и в lcd.h и в ds18b20.h
что можете посоветовать ?
давно интересовался вопросом повторного включения модуля в многомодульном проэкте
тоесть
в главном модуле main усть #include <avr/io.h>
но он также нужен и в lcd.h и в ds18b20.h
что можете посоветовать ?
Tell Me The Truth
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
- Не использовать #pragma once
- Просто включать <avr/io.h> в каждом файле
- В своих многократно включаемых хидерах (myfile.h) оборачивать их содержимое в "скобки" препроцессора
https://ru.wikipedia.org/wiki/Include_guard
- Просто включать <avr/io.h> в каждом файле
- В своих многократно включаемых хидерах (myfile.h) оборачивать их содержимое в "скобки" препроцессора
Код: Выделить всё
#ifndef MYFILE_H
#define MYFILE_H
// содержимое myfile.h
#enfid- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Почему-то в Keil'е это не работает, так же, как и рекомендуемая там форма записи:WiseLord писал(а): - В своих многократно включаемых хидерах (myfile.h) оборачивать их содержимое в "скобки" препроцессораКод: Выделить всё
#ifndef MYFILE_H #define MYFILE_H // содержимое myfile.h #enfid
Код: Выделить всё
#ifndef FILENAME_INCLUDED
#define FILENAME_INCLUDED
/* Header File Contents */
#endif
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- A. Fig Lee
- Потрогал лапой паяльник
- Сообщения: 306
- Зарегистрирован: Сб мар 17, 2012 20:31:44
- Откуда: Нью Йорк
Re: Вопросы по С/С++ (СИ)
Не может быть, чтоб не работало
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Сам понимаю, что не правильно это, но тем не менее в Мплабе нормально, а Кайл ругается.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Собственно, обе записи ничем не отличаются.Zhuk72 писал(а):так же, как и рекомендуемая там форма записи
Надеюсь, у Вас не во всех файлах именно "FILENAME_INCLUDED". У каждого хидера должно быть своё уникальное имя для макроса. Я обычно предпочитаю для файла типа FileName.h выбирать имя FILENAME_H.
И про keil - точно что-то не так делаете. Потому что та же STDPERIPH библиотека для STM32 точно с такими же макросами реализована.
Re: Вопросы по С/С++ (СИ)
Должно быть #endifZhuk72 писал(а):Код: Выделить всё
#enfid
Опечатка?
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! 
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
опечатка
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Разумеется. FILENAME заменяется, скажем, на INIT_H, MENU_H и т.д.WiseLord писал(а):Надеюсь, у Вас не во всех файлах именно "FILENAME_INCLUDED".
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Re: Вопросы по С/С++ (СИ)
а на размере кода сие не сказывается ?WiseLord писал(а): - Просто включать <avr/io.h> в каждом файле
Tell Me The Truth
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
С чего бы вдруг?
Re: Вопросы по С/С++ (СИ)
есть некая структура
как обратится, считать данные, к примеру, с 0 или 5 или 30 байта данной структуры ?
Код: Выделить всё
typedef struct{
char chunkId[4];
char format[4];
char subchunk1Id[4];
unsigned short audioFormat;
unsigned short numChannels;
unsigned long sampleRate;
unsigned long byteRate;
unsigned short blockAlign;
unsigned short bitsPerSample;
char subchunk2Id[4];
unsigned long subchunk2Size;
}HEADER;
HEADER wav_header;
Tell Me The Truth




