Есть функция, которая объявлена так Код (C++): void add_var(char *varname, int var) Вот, как она вызывается: Код (C++): add_var("Humidity", Humidity); Вот, что по этому поводу говорит компилятор: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] add_var("Humidity", Humidity); Как исправить?
все правильно, вы вместо указателя на строку дали строку - константу. Объявите нужную строку выше, а на более точный ответ данных маловато. В частности, что функция делает - если аргумент - указатель на строку, то интуитивно кажется что функция что-то в этой строке меняет, например, пишет туда значение Humidity в символьном виде. Тогда совсем очевидно, что нельзя вместо *char брать аргументов constant string. И не используйте одинаковые имена, например назовите переменные HumidityV (в смысле Value) и HumidityS (string).
Это варнинг. Т.е. все он может передать, но раз уж такое объявлено deprecated, мне бы по правильному. to Onkel. Функция добавляет к строке подстроку вида var_name=var_value. Соответственно выглядеть будет так: Код (C++): add_var("var_name", var_value);
все правильно, в С для atmega переменные в озу и в пзу - разные, и для них и функции соответсвенно разные.
В С указатель на массив совпадает с указателем на первый член массива и с много еще чем, что удобно, но различные компиляторы могут по разному понимать такие тонкие штуки. Лучше не экспериментировать, как показал опыт выше. пы сы к тому же в мк есть специфика - char из озу и char из flash - разные виды.