Невозможно обновить переменную conf проекта в программе - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу обновить значение переменной во время выполнения, присутствующей в конфигурации проекта согласно некоторому условию.Но в настоящее время я получаю эту ошибку: 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_ */
/*---------------------------------------------------------------------------*/

Примечание: Iхотите обновить его в одном из файлов согласно некоторому условию, а затем использовать обновленное значение в другом файле.

1 Ответ

0 голосов
/ 26 сентября 2019

Прежде всего, 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();
}
/*---------------------------------------------------------------------------*/
...