Невозможно обновить переменную conf проекта в программе
Я хочу обновить значение переменной во время выполнения, присутствующей в конфигурации проекта, в соответствии с некоторым условием. Но в настоящее время я получаю эту ошибку:error: lvalue required as left operand of assignment
Актуальный код:
#include "contiki.h"
#include <stdio.h> /* For printf() */
/*---------------------------------------------------------------------------*/
PROCESS(hello_world_process, "Hello world process");
AUTOSTART_PROCESSES(&hello_world_process);
static void update_project_conf_value(void)
{
printf("Original Value: %d\n",TEST_VALUE);
TEST_VALUE = 0;
printf("After update: %d\n",TEST_VALUE);
}
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(hello_world_process, ev, data)
{
PROCESS_BEGIN();
update_project_conf_value();
PROCESS_END();
}
/*---------------------------------------------------------------------------*/
Конфигурация проекта:
#ifndef PROJECT_CONF_H_
#define PROJECT_CONF_H_
#define TEST_VALUE 1
/*---------------------------------------------------------------------------*/
#endif /* PROJECT_CONF_H_ */
/*---------------------------------------------------------------------------*/
Примечание: я хочу обновить его в одном из файлов в соответствии с некоторым условием, а затем использовать обновленное значение в другом файле.
1 ответ
Прежде всего, TEST_VALUE
это макрос. Вы можете читать это, но не можете писать на нем. Он также исчезнет во время выполнения.
Что вам действительно нужно, так это глобальная переменная.
В шапке поставить примерно так:
#ifndef PROJECT_CONF_H_
#define PROJECT_CONF_H_
int g_TEST_VALUE; // Declaration
/*---------------------------------------------------------------------------*/
#endif /* PROJECT_CONF_H_ */
/*---------------------------------------------------------------------------*/
в вашем источнике поместите что-то вроде этого:
#include "contiki.h"
#include <stdio.h> /* For printf() */
/*---------------------------------------------------------------------------*/
extern int g_TEST_VALUE = 1; // Definition
PROCESS(hello_world_process, "Hello world process");
AUTOSTART_PROCESSES(&hello_world_process);
static void update_project_conf_value(void)
{
printf("Original Value: %d\n",TEST_VALUE);
g_TEST_VALUE = 0;
printf("After update: %d\n",TEST_VALUE);
}
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(hello_world_process, ev, data)
{
PROCESS_BEGIN();
update_project_conf_value();
PROCESS_END();
}
/*---------------------------------------------------------------------------*/