无法在程序中更新项目conf变量

问题描述 投票:0回答:1

我想在运行时更新变量的值,根据某些条件,该变量存在于项目配置中。但目前我收到此错误: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_ */
/*---------------------------------------------------------------------------*/

[注:我想根据某些条件在文件之一中更新它,然后在其他文件中使用更新后的值。

c contiki contiki-process
1个回答
0
投票

首先,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();
}
/*---------------------------------------------------------------------------*/
© www.soinside.com 2019 - 2024. All rights reserved.