首页 > 解决方案 > 使用 GCC 4.8 构建错误:数组用作初始化程序

问题描述

在 SUSE 上使用 gcc 4.8 我收到以下错误:

有谁知道这个错误的根源是什么,以及如何解决它?

我回来了更多细节:

有以下课程

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:

标签: c++gcccompiler-errors

解决方案


麻烦的是这个成员的初始化

字符选项文件路径[PATH_MAX+1] = "";

gcc 4.8(我使用的)对麻烦线(那个插入符号 ^ 符号)具有误导性。

任何人都可以提交错误吗?


推荐阅读