zoukankan      html  css  js  c++  java
  • ArcCore重构-头文件引用问题的初步解决

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5
     
    基本问题
    1. 头文件引用混乱,所有头文件通过从搜索路径(-I)中引用,存在名称污染问题,需加入路径信息;
     
    ArcCore代码的编译系统中,定义了大量的inc-y路径,最后使用-I参数将这些路径加入到编译器的命令行参数中。而代码文件中,引用头文件时都是直接使用 #include "xxx.h" 的形式。
     
    这样有几个问题:
    1. 编译系统负担过重,需要加入大量的头文件搜索路径;
    2. 导致头文件名称污染问题,设想如果存在两个相同名称的头文件,则会出现引用混乱,先找到哪个算哪个?
    3. 导致代码结构不清,不清楚所引用的头文件的存放位置。不易阅读代码,不易掌握代码结构;
     
    重构的目标为:
    1. 头文件引用,基于一个相对路径,使用尖括号引用,如: #include <xxx.h> 
    2. 大量缩减inc-y的量,只需要少量的几个,如TOPDIR/include, ARCHDIR/include等;
     
    反过来看,名称污染问题的可能性是存在的,而当前的代码没有出现问题,在于没有出现同名的头文件。所以有一个简单的解决办法,就是统一基于TOPDIR/include路径,将所有代码文件中的头文件引用进行替换。
     
    可以使用脚本来完成这一动作,如下:
    #!/bin/bash
    # $1: TOPDIR if specified
    
    CURDIR=$(pwd)
    TOPDIR=$CURDIR
    TMPHDR=/tmp/.tmp.headers
    [ -n "$1" ] && TOPDIR=$1
    
    header_files=$(find ${TOPDIR} -name "*.h")
    echo -n > $TMPHDR
    for h in $header_files
    do
        echo ${h#${TOPDIR}/} >> $TMPHDR
    done
    
    unhandled_headers=
    target_files=$(find ${CURDIR} -name "*.c" -o -name "*.h")
    for t in $target_files
    do
        echo "Handling ${t#${CURDIR}/}..."
        _headers=$(grep "#include" $t | awk '{print $2}')
        for h in ${_headers}
        do
            echo -n "  $h"
            [ "${h:0:1}" == "<" ] && echo && continue
    
            # 1 for the double-quote
            nh=$(grep -w ${h:1:0-1} $TMPHDR 2>/dev/null)
            if [ -z "$nh" ]; then
                unhandled_headers="$unhandled_headers $h"
                echo
                continue
            fi
            [ "${nh:0:8}" == "include/" ] && nh=${nh#"include/"}
            echo " ---> <$nh>"
            sed -i "s@$h@<$nh>@g" $t
        done
    done
    
    echo "Header files not handled: $unhandled_headers"
    
    #rm -f $TMPHDR
  • 相关阅读:
    Apache Dubbo已不再局限于Java语言
    生产Server遭挖矿程序入侵,暴力占用CPU
    【转载】【原创】贵在,难在,成在
    【转载】【原创】生命中,要有自己的一方晴天
    (转)网上看的一篇文章,感觉会给程序员一些启发
    (转)在JSP客户端限制表单重复提交
    (转)用javascript做删除时的提示信息
    (转)上传自动显示图片 代码
    控制文字长度,多出的文字用省略号代替
    PS快捷键 未完
  • 原文地址:https://www.cnblogs.com/wjcdx/p/8998587.html
Copyright © 2011-2022 走看看