В программе прописан алгоритм соединения с сервером, передача пакета (256-512байт) на сервер получение подтвеждения приема от сервера переход в ожидания новой порции данных от прибора.
собственно все по ДШ и семплам от производителя.
Так вот я и хочу узнать как именно написано у вас. Не код, а описание алгоритма, наподобие того, что я сделал в первом сообщении.Pavel_1978 писал(а):У меня модули передают измеренные данные с прибора и текущие координаты на сервер.
В программе прописан алгоритм соединения с сервером, передача пакета (256-512байт) на сервер получение подтвеждения приема от сервера переход в ожидания новой порции данных от прибора.
собственно все по ДШ и семплам от производителя.
Код: Выделить всё
#define LD_NUM 3
#define TO_STR(s) # s
#define CONCAT_STR(a, b) a ## b
char const str_Dev_Info[]=TO_STR(CONCAT_STR(MDIOv1.0 LD, LD_NUM));
Код: Выделить всё
CONCAT_STR(MDIOvКод: Выделить всё
#define LD_NUM 3
#define TO_STR(s) # s
#define CONCAT_STR(a, b, c) a ## b ## c
char const str_Dev_Info[]=CONCAT_STR(<TO_STR(MDIOv1.0 LD,>,LD_NUM,<)>)
Код: Выделить всё
#define LD_NUM 3
#define str(s) #s
#define TO_STR(s) str(s)
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);Код: Выделить всё
#define LD_NUM 3
#define TO_STR(s) # s
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);Код: Выделить всё
#define TO_STR(s) str(s)Да, это всё странно, но, похоже, Вы были правы:a_skr писал(а):если делать вот так:
Код: Выделить всё
wiselord@wiselord home $ cat q.c
#define LD_NUM 3
#define TO_STR(s) #s
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);
wiselord@wiselord home $ gcc -E q.c
# 1 "q.c"
# 1 "<command-line>"
# 1 "q.c"
char const str_Dev_Info[]= "MDIOv1.0 LD" "LD_NUM";
wiselord@wiselord home $ cat q.c
#define LD_NUM 3
#define str(s) #s
#define TO_STR(s) str(s)
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);
wiselord@wiselord home $ gcc -E q.c
# 1 "q.c"
# 1 "<command-line>"
# 1 "q.c"
char const str_Dev_Info[]= "MDIOv1.0 LD" "3";Если бы не проверял, не написал бы сюда. Проверено в C++ Builder и avr-gcc.Аlex писал(а):...вообще бессмысленный макрос. Он будет просто клонировать один в один.
Существует также еще один случай, когда применяется второй проход. Его можно использовать для подстановки аргумента с его последующей стрингификацией при использовании двухуровневых макросов. Добавим макрос 'xstr' к рассмотренному выше примеру:
#define xstr(s) str(s)
#define str(s) #s
#define foo 4
xstr (foo)
Здесь значение 'xstr' заменяется на '"4"', а не на '"foo"'. Причиной этому служит то, что аргумент макроса 'xstr' заменяется при первом проходе (так как он не использует стрингификацию или объединение аргумента). В результате первого прохода формируется аргумент макроса 'str'. Он использует свой аргумент без предварительного просмотра, так как здесь используется стрингификация.
Код: Выделить всё
#define LD_NUM 3
#define TO_STR(s) #s
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);Код: Выделить всё
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);
char const str_Dev_Info[]= "MDIOv1.0 LD" #LD_NUM;
char const str_Dev_Info[]= "MDIOv1.0 LD" "LD_NUM";Код: Выделить всё
#define LD_NUM 3
#define str(s) #s
#define TO_STR(s) str(s)Код: Выделить всё
char const str_Dev_Info[]= "MDIOv1.0 LD" TO_STR(LD_NUM);
char const str_Dev_Info[]= "MDIOv1.0 LD" str(LD_NUM);
char const str_Dev_Info[]= "MDIOv1.0 LD" str(3);Код: Выделить всё
char const str_Dev_Info[]= "MDIOv1.0 LD" #3;
char const str_Dev_Info[]= "MDIOv1.0 LD" "3";Приведите код, который вы пишете для этого. Я вам покажу, где там размер массива.kelod писал(а):это храню массивом... задаю его самостоятельно, при создании массива