Я недавно начал использовать Arduino, поэтому мне все еще нужно адаптироваться и найти различия между C / C ++ и языком Arduino.
Итак, у меня к вам вопрос.
Когда я вижу кто-то, использующий строку в стиле C в Arduino (char *str
), всегда инициализирует ее так (и никогда не освобождает):
char *str = "Hello World";
В чистом виде C, я бы что-то сделал вот так:
int my_strlen(char const *str)
{
int i = 0;
while (str[i]) {
i++;
}
return (i);
}
char *my_strcpy(char *dest, char const *src)
{
char *it = dest;
while (*src != 0) {
*it = *src;
it++;
src++;
}
return (dest);
}
char *my_strdup(char const *s)
{
char *result = NULL;
int length = my_strlen(s);
result = my_malloc(sizeof(char const) * (length + 1));
if (result == NULL) {
return (NULL);
}
my_strcpy(result, s);
return (result);
}
, а затем инициализируйте его следующим образом:
char *str = my_strdup("Hello World");
my_free(str);
Итак, вот мой вопрос, о строках Arduino в стиле C, является mallo c необязательным или эти люди просто ошиблись?
Спасибо за ваши ответы.