Страница 264 из 386
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:31:11
ARV
dm211 писал(а):Ну на табло у меня минус показывает sprintf
так это у вас формат в sprintf ЗНАКОВЫЙ, небось,
%d - угадал? напишите
%u и будет без минуса

Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 14:33:55
Reflector
[uquote="dm211",url="/forum/viewtopic.php?p=3309469#p3309469"]А я хочу, чтобы ниже нуля был ноль, тогда вопрос-что делать?[/uquote]
Сначала проверяй на 0, потом минусуй, а не наоборот.
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт фев 15, 2018 15:50:20
dm211
[uquote="ARV",url="/forum/viewtopic.php?p=3309473#p3309473"]
dm211 писал(а):Ну на табло у меня минус показывает sprintf
так это у вас формат в sprintf ЗНАКОВЫЙ, небось,
%d - угадал? напишите
%u и будет без минуса

[/uquote]
самодельный sprintf, но это где то там, с %u не уходит на минус, а на большое число..
Добавлено after 1 hour 8 minutes 25 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3309476#p3309476"]Сначала проверяй на 0, потом минусуй, а не наоборот.[/uquote]
Помогло,спасибо.
Век живи-век учись.
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб фев 17, 2018 19:34:15
Пока_без_кота
Доброго времени суток. Что возвращает данное выражение ?
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб фев 17, 2018 19:54:20
uldemir
0 - если выражение ложно, не 0 - если истинно (обычно 1)
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб фев 17, 2018 20:51:43
Пока_без_кота
Спасибо.
Re: Вопросы по С/С++ (СИ)
Добавлено: Пт фев 23, 2018 19:10:16
Пока_без_кота
Что делает следующая строка ?
Код: Выделить всё
uint8_t segments = digit < 10 ? _digit2segments[digit] : 0x00;
А еще лучше, какое ключевое слово гуглить, чтобы научиться понимать такие строки ?
Re: Вопросы по С/С++ (СИ)
Добавлено: Пт фев 23, 2018 19:23:03
ARV
Пока_без_кота писал(а):Что делает следующая строка ?
в переменную segments помещается значение _digit2segments[digit], если digit меньше 10, а если больше, то в segments помещается 0.
Пока_без_кота писал(а):какое ключевое слово гуглить, чтобы научиться понимать такие строки ?
тернарный оператор ? (это сам оператор, а не вопрос в конце предложения)
Re: Вопросы по С/С++ (СИ)
Добавлено: Пт фев 23, 2018 19:35:45
Пока_без_кота
Благодарю !!!
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб фев 24, 2018 20:30:24
levaclaus
Подскажите, в rx_buffer[] сливаются ответы от uart, известны все возможные слова и их расположение в этом буфере.
Как теперь красивее и практичнее воспользоваться условием if ?
К примеру в
rx_buffer[0] = 'I';
rx_buffer[1] = 'V';
if ((rx_buffer[0] == 'I')&&(rx_buffer[1] == 'V')) {
doit();
};
Но как быть если нужно проверить строку из 16 символов?
Re: Вопросы по С/С++ (СИ)
Добавлено: Сб фев 24, 2018 21:16:33
ARV
levaclaus писал(а):Но как быть если нужно проверить строку из 16 символов?
strncmp
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 19:37:16
ROMan2947
Приветствую! в файле main объявил структуру, по прерыванию передаю адрес этой структуры в функцию в include-файл для работы с ее членами. компилятор плюется. Как можно решить эту проблему?
Спойлер
Код: Выделить всё
///////////////////////////////////////
struct struct_1 {
uint8_t a;
uint8_t b;
uint8_t c;
}A;
ISR (INT0_vect)
{
function(&A);
}
int main(void)
{
}
//////////////////////////////////////////
//////////////////
include - file////
/////////////////
void function(struct struct_1 *A)
{
A->a+=1;
A->b+=1;
A->c+=1;
}
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 19:42:59
viiv
[uquote="ROMan2947",url="/forum/viewtopic.php?p=3317650#p3317650"]компилятор плюется. Как можно решить эту проблему?[/uquote]
Как ругается компилятор? Он ведь Вам говорит, что ему не нравится.
Попробую свои телепатические возможности
Зачем два раза? Имя структуры не может совпадать ключевым словом (struct - ключевое слово)
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 19:51:08
ARV
вы инклюдите исходник, т.е. файл с расширением *.c? если так, то это плохая практика.
надо инклюдить только *.h файлы, в которых, кстати, не должно быть никакой реализации функций.
надо так:
Код: Выделить всё
// заголовочный файл main.h
#if !defined(__MAIN_H__)
#define __MAIN_H__
#include <stdint.h>
typedef struct{
uint8_t a;
uint8_t b;
uint8_t c;
} my_struct;
#endif
// файл main.c
#include "main.h"
#include "next.c"
static my struct A;
ISR(INT0_vect){
function(&A);
}
// файл next.h
#if !defined(__NEXT_H__)
#define __NEXT_H__
#include "main.h"
void function(my_struct *s);
#endif
// файл next.c
#include "next.h"
void function(my_struct *s){
s->a++;
s->b--;
s->c = s->a + s->b;
}
кстати, вызывать функции из других модулей в обработчике прерываний - тоже так себе идея...
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 19:59:16
ROMan2947
Зачем два раза? Имя структуры не может совпадать ключевым словом (struct - ключевое слово)
исправил
Добавлено after 3 minutes 40 seconds:
вы инклюдите исходник, т.е. файл с расширением *.c? если так, то это плохая практика.
в maine я подключаю файл с расширением .h туда и передаю структуру для работы, в этом файле у меня функция function.
Добавлено after 3 minutes 8 seconds:
кстати, вызывать функции из других модулей в обработчике прерываний - тоже так себе идея...
чем это чревато?да и как быть если оч надо....
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 20:18:30
ARV
ROMan2947 писал(а):файл с расширением .h туда и передаю структуру для работы, в этом файле у меня функция function
не делайте так
ROMan2947 писал(а):чем это чревато?
ничем страшным, кроме достаточно долгого вызова обработчика прерываний и расхода памяти на стек. в принципе, можно забить.
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 21:26:42
ROMan2947
не делайте так
у меня уже несколько библиотек написанных подобным образом,что удивительно, что они работают без нарекания...я бы дальше так и думал,что все так и должно быть...но мне одно не понятно почему они работают когда в *h. файлах должно быть только описание,а там у меня куча функции с текстом, которые и принимаю и возвращают данные, хоть и внешние....а со структурами не прокатило?
Re: Вопросы по С/С++ (СИ)
Добавлено: Пн фев 26, 2018 22:54:21
WiseLord
Они работают "без нарекания" до тех пор, пока этот .h файл включается в коде только один раз.
Стоит только включить такой .h файл в два разных .c файла, и начнёте долго и упорно разгребать ошибки компоновки.
А по поводу приведённого кода тоже включу телепатию и предположу, что ругается компилятор на вызов в прерывании неизвестной (ранее не объявленной) функции.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт фев 27, 2018 00:04:15
Аlex
Попробуйте объявить тип структуры через
typedef, чтобы без всяких
было.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт фев 27, 2018 00:19:32
arkhnchul
вы упорно не хотите написать, как именно вам ругается компилятор. Считаете это неважным? Рискну предположить, что в его ругани все описано достаточно исчерпывающе.
подсказка: откуда вдруг в объявлении функции будет известен тип struct_1?