Ошибка сборки с GCC 4.8: массив используется как инициализатор - PullRequest
0 голосов
/ 25 апреля 2018

Используя gcc 4.8 на SUSE, я получил следующую ошибку:

Кто-нибудь знает, каков источник этой ошибки и как ее устранить?

Я возвращаюсь с более подробной информацией:

Имея следующий класс

smoquery.h 

    class SmoQuery
    {
        public:
            SmoQuery(SqlLogonElem *        const   & eLogon,
                     optionsInfo_t *       const   & optionsInfoP,
                     logicalNameList_t *   const   & pRequestedDbList,
                     logicalNameList_t *   const   & pExcludeDbList,
                     SqlDatabaseElem *     const   & peDatabase,
                     dsBool_t              const     bIncludeFrontEndCapacity, 
                     dsBool_t              const     bReplacementChars);

            ~SmoQuery();

        private:
            Options mOptions;

            char optionsFilePath[PATH_MAX+1] = "";
    };


smoquery.cpp

SmoQuery::SmoQuery(SqlLogonElem *         const   & eLogon,
                   optionsInfo_t *       const   & optionsInfoP,
                   logicalNameList_t *   const   & pRequestedDbList,
                   logicalNameList_t *   const   & pExcludeDbList,
                   SqlDatabaseElem *     const   & peDatabase,
                   dsBool_t               const       bIncludeFrontEndCapacity, 
/*line 80 --->*/                   dsBool_t              const        bReplacementChars)
{
/* all code was commented */
}

Журнал сборки говорит:

Gmake build ... (в этом комментарии были удалены)

g++ -D_LINUX -D_LINUX64 -DLINUX64 -D_LINUXAMD64 -DMBCS_AIX -D_THREADS -D_CPP_ALL -DNO_CDE -D_LONG_LONG -D_LARGEFILE64_SOURCE -DWIDE_CHAR_FIX -DDSMAPILIB -DDSM_STANDALONE_PROGRAM -DUNIX -D_FILE_OFFSET_BITS=64 -D_NEED_USING_NAMESPACE -D_GNU_SOURCE -DSQL -O -I. -I.. .... -fpermissive -fpic -fstack-protector -Wall -Wno-write-strings -Wno-missing-braces -DBUILD_TSM_V816 -std=c++11 -c smoquery.cpp -o ../../sqlonlinux/optimized/obj816/linuxAMD64/smoquery.o

...

smoquery.cpp: In constructor ‘SmoQuery::SmoQuery(SqlLogonElem* const&, optionsInfo_t* const&, logicalNameList_t* const&, logicalNameList_t* const&, SqlDatabaseElem* const&, dsBool_t, dsBool_t)’:
smoquery.cpp:132:72: error: array used as initializer
                    dsBool_t              const        bReplacementChars)
                                                                        ^
In file included from smoquery.cpp:80:0:

1 Ответ

0 голосов
/ 26 апреля 2018

Беда в инициализации этого члена

char optionsFilePath [PATH_MAX + 1] = "";

gcc 4.8 (который я использую) вводит в заблуждение из-за проблемной черты (это знак ^).

Может кто-нибудь сообщить об ошибке?

...