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
  • 相关阅读:
    通道符和xargs命令
    Linux中sudo的用法
    yum中查找程序由哪个包提供
    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled)
    Centos7中一次性安装开发者工具
    数据库设计步骤
    校验表单demo
    javascript之DOM总结
    javascript之BOM对象总结
    javascript之正则表达式
  • 原文地址:https://www.cnblogs.com/Waming-zhen/p/5490611.html
Copyright © 2011-2022 走看看