5 netdev.h头文件不能被其他c文件包含,否则报错

发布于 2020-07-02 20:33:33

由于程序需要获取网卡的相关参数,因此准备使用netdev.c中的netdev_get_by_name函数。
在main.c中包含了头文件netdev.h,其他函数还未调用的情况下(以下代码中注释void get_ip(void)函数),构建工程(使用RT-Thread Studio 1.1.1版本,在朋友1.0.6版本上也不行)会报错。
代码如下:

#include <rtthread.h>
#include <netdev.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

int main(void)
{
    int count = 1;

    while (count++)
    {
        LOG_D("Hello RT-Thread!");
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

void get_ip(void)
{
    struct netdev *netdev_device = netdev_get_by_name("esp0");
    rt_kprintf("ip address: %s\n", inet_ntoa(netdev_device->ip_addr));
}

报错信息如下:

make: *** [applications/subdir.mk:18: applications/main.o] Error 1
make: *** [applications/subdir.mk:45: applications/a.o] Error 1
make: *** Waiting for unfinished jobs....
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'
unknown type name 'ip_addr_t'

查看更多

关注者
0
被浏览
154
bernard
bernard 2020-07-02
#include <netdev_ipaddr.h>
3 个回答
dream717
dream717 2020-07-02

经过不断的尝试,同时使用:

include <netdev.h>

include <netdev_ipaddr.h>

就能正常获取网卡的信息了。

Cheney_Chen
Cheney_Chen 2020-07-04

正常使用方式是

#include <arpa/inet.h>         /* 包含 ip_addr_t 等地址相关的头文件 */
#include <netdev.h>            /* 包含全部的 netdev 相关操作接口函数 */

官方编程指南中有具体介绍

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友