c - 无法更新程序中的项目conf变量

标签 c contiki contiki-process

我想在运行时更新变量的值,根据某些条件存在于项目配置中。但目前我收到此错误: 错误:需要左值作为赋值的左操作数

实际代码:

#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_ */
/*---------------------------------------------------------------------------*/

注意:我想根据某种条件在一个文件中更新它,然后在另一个文件中使用更新后的值。

最佳答案

首先,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();
}
/*---------------------------------------------------------------------------*/

关于c - 无法更新程序中的项目conf变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121051/

相关文章:

c - 使用命令从 Contiki 删除 cc2650 的所有内容

Contiki定时器不暂停进程

c - 我如何向另一个程序发送消息,并输出消息已收到?

c - 没有指针的 C 程序怎么会不断出现段错误错误?

c - 如何从随机数生成器返回中间位?

c++ - 如何在 Mingw Gcc 中声明和链接到 RoInitialize、RoUninitialize、RoGetActivationFactory 和 HSTRING 函数

contiki - 是否可以在没有 Contiki OS 的情况下在我的项目中使用咖啡文件系统(作为库)?

c - Swift + C 函数

c - GCC 中是否有 __int32 的对应项?