Аvrstudio/c#/песочница
26.12.2012, 18:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от _Артём_
|
|
ЗЫ. Если переменная объявлена как volatile, то продекларирована (declaration) она тоже должна быть volatile
|
это уже повезде поправил, счас еще пробегусь
|
|
|
|
26.12.2012, 18:24
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
вопрос..
если я volatile char x; передаю аргументом в функцию, но в функции в декларации указано myfunc(char *_str), студия дает варнинг по этом поводу.. важно указывать volatile даже там? в декларации функции?
|
|
|
|
26.12.2012, 19:03
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Что б не искать чудес - где определил, а где объявил, и все ли объявил, что определил - по взрослому с объявлениями поступают так
// == myfile.h ===
#ifndef MYFILE_H
#define MYFILE_H
typedef struct {
unsigned char A;
unsigned char B;
} my_struct_t;
#endif
#ifndef MYFILE_C
extern my_struct_t MMM;
exterm int myCNT;
#else
my_struct_t MMM;
int myCNT;
#undef MYFILE_C
#endif
//============================
И только там где надо эти переменные
объявить пишут:
#define MYFILE_C
#include "myfile.h"
|
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
26.12.2012, 19:26
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
Что б не искать чудес - где определил, а где объявил, и все ли объявил, что определил - по взрослому с объявлениями поступают так
// == myfile.h ===
#ifndef MYFILE_H
#define MYFILE_H
typedef struct {
unsigned char A;
unsigned char B;
} my_struct_t;
#endif
#ifndef MYFILE_C
extern my_struct_t MMM;
exterm int myCNT;
#else
my_struct_t MMM;
int myCNT;
#undef MYFILE_C
#endif
//============================
И только там где надо эти переменные
объявить пишут:
#define MYFILE_C
#include "myfile.h"
|
Вариант допустимый, но какой-то экзотичный (имхо).
Более стандартно так:
|
Код:
|
ifndef test_h__
#define test_h__
typedef struct {
unsigned char A;
unsigned char B;
} my_struct_t;
extern my_struct_t my_data;
#endif // test_h |
И в одноимённом с-файле
|
Код:
|
#include "test.h"
my_struct_t my_data; |
|
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
26.12.2012, 20:08
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Стандартно где?
|
|
|
|
26.12.2012, 20:46
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
|
Стандартно где?
|
На Земле.
Среди Си/Си++ программистов. Или вы иначе считаете?
|
|
|
|
26.12.2012, 21:37
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
У нас как то принято в проектах что объявлением глобальных переменных управляет тот, кто кто их определил. Поэтому только я могу поставить это заветное #define MY_C и объявить переменную - а остальные только extern получат. По мере продвижения проекта, переменная ж может гулять по разным местам. Сначала в ОЗУ, когда ОЗУ не хватает, то куда нить в секцию памяти USB или Ethernata приткнешь, а потом SRAM подвесят - туды ее. И пользуют все твою "переменную" и даже не замечают как она перемещается.
Это стандартный подход?
|
|
|
|
26.12.2012, 21:56
|
|
|
Вид на жительство
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 328
Сказал спасибо: 104
Сказали Спасибо 106 раз(а) в 70 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
|
Это стандартный подход?
|
Даже слишком.
|
|
|
|
26.12.2012, 22:22
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
У нас как то принято в проектах что объявлением глобальных переменных управляет тот, кто кто их определил. Поэтому только я могу поставить это заветное #define MY_C и объявить переменную - а остальные только extern получат. По мере продвижения проекта, переменная ж может гулять по разным местам. Сначала в ОЗУ, когда ОЗУ не хватает, то куда нить в секцию памяти USB или Ethernata приткнешь, а потом SRAM подвесят - туды ее. И пользуют все твою "переменную" и даже не замечают как она перемещается.
Это стандартный подход?
|
Да, вполне.
Нестандартным мне показалось вот что:
|
Код:
|
#define MYFILE_C
#include "myfile.h" |
Непонятно в чём выгода этого приёма.
|
|
|
|
26.12.2012, 22:45
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
жесть, два часа искал кошку в темной комнате.. надо отладчик..
парсил дополнительно строку GGA и не учел, что пока данные не "пошли", там идут заепятые одна за другой, а я сразу степпер на 43 позицию, парсить.. доска в ребут, я уже психовать)
Когда jtag clone для pdi уже сделают?)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Песочница по С
|
RY723 |
Электроника - это просто |
0 |
27.02.2011 14:05 |
Часовой пояс GMT +4, время: 16:47.
|
|