e2 studioでC++ソースでのINDEXER/CODANの調子が悪そうなので調べてみようと思います

こんにちは、NoMaYです。

昨日、別スレッドをきっかけに、最近のe2 studioでは(実は結構昔から?)プロジェクトウィザードでGNURXやCC-RXのC++プロジェクトを作成する場合にもRXスマートコンフィグレータを選択可能になっていることを知りました。同時に、C++ソースに対してはCソースよりもe2 studioのINDEXER/CODANの調子が悪そうなことも知りました。そこで、ちょっと調べてみようと思いました。出来れば改善策の落としどころも模索してみたいです。(でも、本来は、ルネサスさんに直して貰うべきものかな、とは思いますが。)

まずは、バグ一覧やFAQに何か記載されているか調べてみましたが、特にはありませんでした。

e² studio 2021-04 バグ一覧 (includeの文字列を検索)
www2.renesas.eu/_custom/software/ree_eclipse/e2studio8/docs/releasenotes/2021_04/openissues.htm

Google検索: "e2 studio" "C++" include site:ja-support.renesas.com/knowledgeBase
www.google.com/search?q=%22e2+studio%22+%22C%2B%2B%22+include+site%3Aja-support.renesas.com%2FknowledgeBase
www.google.com/search?q=%22e2+studio%22+%22C%2B%2B%22+include+site%3Aen-support.renesas.com%2FknowledgeBase

[関連スレッド]
e2 studioでビルドエラーが無いのに編集エラーが表示された時に試すと良いかも(workarounds for INDEXER/CODAN troubles)
japan.renesasrulz.com/cafe_rene/f/forum21/4564/e2-studio-workarounds-for-indexer-codan-troubles

続く。

以下、e2 studioでC++ソースでINDEXER/CODANが誤動作している例の画面コピーです。

現状はC++標準ヘッダファイルのインクルードパスがe2 studioに自動認識されていない


本来は以下のようにC++標準ヘッダファイルのインクルードパスがe2 studioに自動認識されているべき

 

Parents
  • こんにちは、NoMaYです。

    先日、別スレッドをきっかけに、最近のe2 studioでは(実は結構昔から?)プロジェクトウィザードでGNURXやCC-RXのC++プロジェクトを作成する場合にもRXスマートコンフィグレータを選択可能になっていることを知りました。同時に、C++ソースに対してはCソースよりもe2 studioのINDEXER/CODANの調子が悪そうなことも知りました。そこで、ちょっと調べ始めてみました。

    脱線しますけど、実は、C++標準ヘッダファイルのインクルードパスのことを何とかしてもまだ挙動がおかしいので、string等のヘッダファイルを追っていて気になったのですが、C++標準ヘッダファイル(というかC++標準ライブラリ)はGPLなのかな?(例外条項が付与されているのであまり厳しくないでしょうけど。) 無知を晒すことになりそうですが、てっきりnewlibにC++版があるのだと思ってました、、、

    GNURX 8.3.0.202102のC++標準ヘッダファイルstringの初めの部分(これはnewlibでは無いですよね、、、)

    // Components for manipulating sequences of characters -*- C++ -*-

    // Copyright (C) 1997-2018 Free Software Foundation, Inc.
    //
    // This file is part of the GNU ISO C++ Library.  This library is free
    // software; you can redistribute it and/or modify it under the
    // terms of the GNU General Public License as published by the
    // Free Software Foundation; either version 3, or (at your option)
    // any later version.

    // This library is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU General Public License for more details.

    // Under Section 7 of GPL version 3, you are granted additional
    // permissions described in the GCC Runtime Library Exception, version
    // 3.1, as published by the Free Software Foundation.

    // You should have received a copy of the GNU General Public License and
    // a copy of the GCC Runtime Library Exception along with this program;
    // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    // <www.gnu.org/.../>.

    /** @file include/string
     *  This is a Standard C++ Library header.
     */

     
    他方、GNURX 8.3.0.202102のC標準ヘッダファイルstring.hの初めの部分(これはnewlibですよね、、、)

    /*
     * string.h
     *
     * Definitions for memory and string functions.
     */

    #ifndef _STRING_H_
    #define    _STRING_H_

    #include "_ansi.h"
    #include <sys/reent.h>
    #include <sys/cdefs.h>
    #include <sys/features.h>

    #define __need_size_t
    #define __need_NULL
    #include <stddef.h>

    #if __POSIX_VISIBLE >= 200809
    #include <xlocale.h>
    #endif

    #if __BSD_VISIBLE
    #include <strings.h>
    #endif

     

Reply
  • こんにちは、NoMaYです。

    先日、別スレッドをきっかけに、最近のe2 studioでは(実は結構昔から?)プロジェクトウィザードでGNURXやCC-RXのC++プロジェクトを作成する場合にもRXスマートコンフィグレータを選択可能になっていることを知りました。同時に、C++ソースに対してはCソースよりもe2 studioのINDEXER/CODANの調子が悪そうなことも知りました。そこで、ちょっと調べ始めてみました。

    脱線しますけど、実は、C++標準ヘッダファイルのインクルードパスのことを何とかしてもまだ挙動がおかしいので、string等のヘッダファイルを追っていて気になったのですが、C++標準ヘッダファイル(というかC++標準ライブラリ)はGPLなのかな?(例外条項が付与されているのであまり厳しくないでしょうけど。) 無知を晒すことになりそうですが、てっきりnewlibにC++版があるのだと思ってました、、、

    GNURX 8.3.0.202102のC++標準ヘッダファイルstringの初めの部分(これはnewlibでは無いですよね、、、)

    // Components for manipulating sequences of characters -*- C++ -*-

    // Copyright (C) 1997-2018 Free Software Foundation, Inc.
    //
    // This file is part of the GNU ISO C++ Library.  This library is free
    // software; you can redistribute it and/or modify it under the
    // terms of the GNU General Public License as published by the
    // Free Software Foundation; either version 3, or (at your option)
    // any later version.

    // This library is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU General Public License for more details.

    // Under Section 7 of GPL version 3, you are granted additional
    // permissions described in the GCC Runtime Library Exception, version
    // 3.1, as published by the Free Software Foundation.

    // You should have received a copy of the GNU General Public License and
    // a copy of the GCC Runtime Library Exception along with this program;
    // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    // <www.gnu.org/.../>.

    /** @file include/string
     *  This is a Standard C++ Library header.
     */

     
    他方、GNURX 8.3.0.202102のC標準ヘッダファイルstring.hの初めの部分(これはnewlibですよね、、、)

    /*
     * string.h
     *
     * Definitions for memory and string functions.
     */

    #ifndef _STRING_H_
    #define    _STRING_H_

    #include "_ansi.h"
    #include <sys/reent.h>
    #include <sys/cdefs.h>
    #include <sys/features.h>

    #define __need_size_t
    #define __need_NULL
    #include <stddef.h>

    #if __POSIX_VISIBLE >= 200809
    #include <xlocale.h>
    #endif

    #if __BSD_VISIBLE
    #include <strings.h>
    #endif

     

Children
No Data