zoukankan      html  css  js  c++  java
  • IAR ERROR --- [Li006]

      今天移植代码时遇到一个比较奇葩的问题,记录如下:  

       Error[Li006]: duplicate definitions for "Uart3"; in "E:IAR_1768Pro_PCB799DebugObjUart3_init.o", and "E:IAR_1768Pro_PCB799DebugObjuModemG600.o" 

        重复定义 变量 Uart3 

        可是,uModemG600.c 文件中没有 Uart3 这个变量 ,只有 uart3.h 这个头文件,问题就出现在在这头文件中。

       Uart3 这个变量的定义就放在 uart3.h 中,而且 uart3.h 在uart3.c 和 uModemG600.c 中都有#include , uart3.h 也未做条件编译,导致uart3.h 重复编译, 变量重复定义。

       //===================问题描述完毕,一下是个人观点======================

       我个人的做法是,变量/函数 定义在 *.c 文件中,变量/函数声明在 *.h 文件中, 并且 *.h 文件加编译条件,放置重复包含,格式如下:

        user.c 

     1 //user.c file
     2 
     3 #include <stdio.h>
     4 #include <string.h>
     5 #include "user.h"
     6 
     7 signed char g_a = 0;
     8 unsigned char g_b = 0;
     9 signed int g_c = 0;
    10  
    11 void fun1(void)
    12 {
    13     //do something
    14 }
    15 
    16 void fun2(void)
    17 {
    18     //do something
    19 }

        user.h

    #ifndef _USER_H_
    #define _USER_H_
    
    extern signed char g_a;
    extern unsigned char g_b;
    extern signed int g_c;
    
    void fun1(void);
    void fun2(void);
    
    #endif
  • 相关阅读:
    jmeter接口测试1-参数化
    关于python线程池threadpool
    scrapy---setting的字段含义
    urlparse 用法
    scrapy(1)win安装
    sublime
    python函数可变参数*args和**kwargs区别
    webservice接口测试wsdl
    charles使用
    K:栈相关的算法
  • 原文地址:https://www.cnblogs.com/Waming-zhen/p/5490611.html
Copyright © 2011-2022 走看看