спасибо за отклики
в свете вышеизложенного спрошу вот еще что, как вычислить в моем случае разницу между двумя датами зная локальное и системное время ?
В VBS есть спец.фция, там жизнь проще
Код: Выделить всё
#include <stdint.h>
//----------------------------------------------------------------------------------------------------
//округление до заданного количества цифр после запятой
//----------------------------------------------------------------------------------------------------
double Round(double value,uint32_t digit)
{
double d=1;
for(uint32_t n=0;n<digit;n++) d*=10;
if (value>=0) return(floor(value*d+0.5)/d);
return(ceil(value*d-0.5)/d);
}Входит в комплект поставки ОС начиная с Windows 95 OSR2.AAX писал(а):для начала нужно найти msvcrt.dll
Код: Выделить всё
#define round(x) (int)(x>0?(x+0.5):(x-0.5))Входит в комплект поставки ОС начиная с Windows 95 OSR2.[/uquote]С очень большой вероятностью эта программа будет работать под WinCE либо Embedded. Причём версий древних, как экскременты мамонта. Если бы речь шла о "нормальных" ОС, наверное, данный вопрос вообще бы не возник.AAX писал(а):для начала нужно найти msvcrt.dll
Код: Выделить всё
#define round(x) (int)(x>0?(x+0.5):(x-0.5))Код: Выделить всё
#define round(x) (long int)(x>=0?( floor(x+0.5)):( ceil(x-0.5) ) )
Код: Выделить всё
#define round(x) (long int)(x>=0?( floor(x+0.5)):( ceil(x-0.5) ) )даFreshMan писал(а):т.е. floor и ceil в этом языке есть из коробки?
даFreshMan писал(а):А round - отсутствует?
Код: Выделить всё
#define round(x) (long)(x>0?(x+0.5):(x-0.5) )В моей Visual Studio 2010 я его тоже не нашёл.А round - отсутствует?
Код: Выделить всё
float hours_timezone_diff = 0;
time_t time_now = time(NULL);
char *as_string_timezone = malloc(11 * sizeof(char));
strftime(as_string_timezone, 10, "%z", localtime(&time_now));
short converted_timezone= atoi(as_string_timezone);
short timezone_round_hours = converted_timezone / 100.;
hours_timezone_diff = timezone_round_hours + (converted_timezone - timezone_round_hours * 100)/60.;
Код: Выделить всё
float hours_timezone_diff = 0;
time_t time1, time2;
time1 = time(NULL);
time2 = mktime(gmtime(&time1));
long seconds_timezone_diff = time1 - time2;
hours_timezone_diff = seconds_timezone_diff / 3600.;
floor, ceil и random живут в библиотеке math. В winCC этом floor и ceil по дефолту доступны (как если бы библиотека math была подключена), но random отсутствует.da-nie писал(а):В моей Visual Studio 2010 я его тоже не нашёл.А round - отсутствует?
Код: Выделить всё
typedef struct
{
int32_t power;
int32_t energy;
uint32_t voltage;
uint32_t current;
} ChannelData_t;
Код: Выделить всё
typedef struct
{
ChannelData_t ChannelData[8];
} All_ChannelData_t;
Код: Выделить всё
All_ChannelData_t All_ChannelData = {
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
{
1000,
1000,
1000,
1000,
},
};
Код: Выделить всё
All_ChannelData_t All_ChannelData = { .ChannelData[0 ... 7] = { 1000, 1000, 1000, 1000 }};ARV писал(а):запятая последняя в каждой структуре и последняя в массиве - не лишняя ли?
От этих якобы лишних запятых хуже не будет. Я предпочитаю ставить запятую и для последнего поля в структуре - потом, при добавлении новых полей, и дифф выглядит "чище" и копипастить проще.VladislavS писал(а):Должно быть 32 целых числа и между ними 31 запятая. Считай.
В будущем, возможно расширение второй структуры.ARV писал(а):кстати, зачем еще одна структура, если в ней только одно поле - массив? чем массив плох?
Это получается будет восемь строк (в каждой по одной структуре)?WiseLord писал(а):All_ChannelData_t All_ChannelData = { .ChannelData[0 ... 7] = { 1000, 1000, 1000, 1000 }};