C ++:数据文件有错误:预期的unqualified-id

时间:2018-04-03 20:33:17

标签: c++

SIMPLY PUT 为什么我的文字数据文件myData.cpp收到错误Expected unqualified-id before '{' token?单独的文件会引发此错误,并在此处http://coliru.stacked-crooked.com/a/7f32b5e643fb4d52

重现
// ***** myData.cpp ******
{ // <---- error occurs here
    { "*****", "Error" },
    { "00-01", "Instructional exposition (textbooks, tutorial papers, etc.)" },
    { "00-02", "Research exposition (monographs, survey articles)" },
    { "00A05", "General mathematics" }
}

更详细。可能有帮助,但不一定要重现错误。

现在,有2个文件main.cppmyFunctions.cpp,一切正常。但是,当我将其拆分为3个文件main.cppmyFunctions.cppmyData.cpp时,我收到错误Expected unqualified-id before '{' token

我想制作3个文件,因为myData.cpp的文字数据很长,我不希望它混乱myFunctions.cpp

这就是我编写的2个文件。

// ***** main.cpp *****
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <ctype.h>
#include <string>
#include <iostream>
using namespace std;

extern size_t msc_get_no(const char*);

int main(int argc, char** argv)
{
    assert(argc >= 0);
    return (int)msc_get_no(argv[1]);
}


// ****** myFunctions.cpp *****
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <ctype.h>

extern size_t msc_get_no(const char*);

struct msc_data
{
   const char* code;
   const char* desc;
};

typedef struct msc_data MSCDat;

static const MSCDat mscdat[] =
{
    { "*****", "Error" },
    { "00-01", "Instructional exposition (textbooks, tutorial papers, etc.)" },
    { "00-02", "Research exposition (monographs, survey articles)" },
    { "00A05", "General mathematics" }
}
   ;

static const size_t msccnt = sizeof(mscdat) / sizeof(mscdat[0]);

static int msc_cmp(const void* a, const void* b)
{
   const char*   msc_code = static_cast<const char*>(a);
   const MSCDat* p        = static_cast<const MSCDat*>(b);
   return strcmp(msc_code, p->code);
}

size_t msc_get_no(const char* msc_code)
{
   MSCDat* p;
   p = (MSCDat*) bsearch(msc_code, &mscdat[0], msccnt, sizeof(mscdat[0]), msc_cmp);
   return p - &mscdat[0];
}

由于Expected unqualified-id中出现myData.cpp错误,因此我有3个无法编译的文件。唯一的区别在于myFunctions.cpp,因此我排除了main.cppmyData.cpp

// ***** myFunctions.cpp ***** 
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#include <ctype.h>

extern size_t msc_get_no(const char*);

struct msc_data
{
   const char* code;
   const char* desc;
};

typedef struct msc_data MSCDat;

static const MSCDat mscdat[] =
#include "myData.cpp" //<------ only here is different
   ;

static const size_t msccnt = sizeof(mscdat) / sizeof(mscdat[0]);

static int msc_cmp(const void* a, const void* b)
{
   const char*   msc_code = static_cast<const char*>(a);
   const MSCDat* p        = static_cast<const MSCDat*>(b);
   return strcmp(msc_code, p->code);
}

size_t msc_get_no(const char* msc_code)
{
   MSCDat* p;
   p = (MSCDat*) bsearch(msc_code, &mscdat[0], msccnt, sizeof(mscdat[0]), msc_cmp);
   return p - &mscdat[0];
}

谢谢

1 个答案:

答案 0 :(得分:2)

您的IDE尝试自行编译myData.cpp。但是这个文件只是一个包含文件。如果您将其重命名为myData.h(甚至 myData.dat)外翻应该没问题。