2012-04-24 35 views
2

cygwinの下でmatlabによって生成された565 powerPCのコードをコンパイルしようとしています。私は次のエラーを取得しますCエラー:予期した `= '、`、'、 `; '、` asm'または `__attribute__ 'の前に

@powerpc-eabi-gcc -gdwarf-2 -c -mno-sdata -DMODEL=testMacs -DRT -DNUMST=2 
-DTID01EQ=1 -DNCSTATES=0 -DRT_STATIC -DMT=0 -I. 
-IC:/Programs/MATLAB/R2007b/simulink/include 
-IC:/Programs/MATLAB/R2007b/extern/include -IC:/cygwin/gnu/powerpc/extern 
2/includes 
-IC:/Programs/MATLAB/R2007b/rtw/c/src 
-IC:/Programs/MATLAB/R2007b/rtw/c/libsrc 
-IC:/cygwin/powerpc-eabi/powerpc-eabi/sys-include 
-IC:/macs_565_R14/Driver 
-IC:/cygwin/ecos/include 
-mcpu=505 -O1 -o ./obj/testMacs.o testMacs.c 

:私は以下のコンパイルコマンドを実行すると は

In file included from testMacs.h:16:0, 
       from testMacs.c:11: 
C:/cygwin/powerpc-eabi/powerpc-eabi/sys-include/math.h:12:1: error: expected `=', `,', `;', `asm' or `__attribute__' before `union' 
C:/cygwin/powerpc-eabi/powerpc-eabi/sys-include/math.h:398:17: error: expected `=', `,', `;', `asm' or `__attribute__' before `const' 
In file included from rtwtypes.h:12:0, 
       from testMacs.h:17, 
       from testMacs.c:11: 
C:/Programs/MATLAB/R2007b/extern/include/tmwtypes.h:83:1: error: expected `=', `,', `;', `asm' or `__attribute__' before `typedef' 

のmath.hのrtwtypes.hは標準変わらないヘッダファイルです。

誰かが私が間違っていることを知っていますか、私はコンパイラオプションがありません。

コードsnippeds: testMacs.h:

/* 
* testMacs.h 
* 
* Real-Time Workshop code generation for Simulink model "testMacs.mdl". 
* 
* Model Version    : 1.6 
* Real-Time Workshop version : 7.0.1 (R2007b+) 21-Apr-2008 
* C source code generated on : Mon Apr 23 06:48:14 2012 
*/ 
#ifndef RTW_HEADER_testMacs_h_ 
#define RTW_HEADER_testMacs_h_ 
#ifndef testMacs_COMMON_INCLUDES_ 
# define testMacs_COMMON_INCLUDES_ 
#include <stddef.h> 
#include <string.h> 
#include <math.h>   /* line 16*/ 
#include "rtwtypes.h"  /* line 17*/ 
#include "simstruc.h" 
#include "fixedpoint.h" 
#include "rt_logging.h" 
#include "rt_nonfinite.h" 
#endif 

のmath.h:

/* math.h -- Definitions for the math floating point package. */ 

#ifndef _MATH_H_ 
#define _MATH_H_ 

#include <sys/reent.h> 
#include <machine/ieeefp.h> 
#include "_ansi.h" 

_BEGIN_STD_C 

union __dmath    /* line 12*/ 
{ 
    __ULong i[2]; 
    double d; 
}; 

... ...

/* Global control over fdlibm error handling. */ 

enum __fdlibm_version 
{ 
    __fdlibm_ieee = -1, 
    __fdlibm_svid, 
    __fdlibm_xopen, 
    __fdlibm_posix 
}; 

    #define _LIB_VERSION_TYPE enum __fdlibm_version 
    #define _LIB_VERSION __fdlib_version 

    extern __IMPORT _CONST _LIB_VERSION_TYPE _LIB_VERSION;  /*line 398*/ 

    #define _IEEE_ __fdlibm_ieee 
    #define _SVID_ __fdlibm_svid 
    #define _XOPEN_ __fdlibm_xopen 
    #define _POSIX_ __fdlibm_posix 

rtwtypes.h:

/* 
* File: rtwtypes.h 
* 
* Definitions required by Real-Time Workshop generated code. 
* 
* Real-Time Workshop version: 7.0.1 
* Generated on: 2012-04-23 06:48:15 
*/ 

#ifndef __RTWTYPES_H__ 
#define __RTWTYPES_H__ 
#include "tmwtypes.h"    /* line 12*/ 

/* This ID is used to detect inclusion of an incompatible rtwtypes.h */ 
#define RTWTYPES_ID_C08S16I32L32N32F1 
#include "simstruc_types.h" 
#ifndef POINTER_T 
# define POINTER_T 

tmwtypes.h:

/* 
*  The following define is used to emulate when all integer types are 
*  32-bits. This is the case for TI C30/C40 DSPs which are RTW targets. 
*/ 
#ifdef DSP32 
# define INT8_T int 
# define UINT8_T unsigned int 
# define INT16_T int 
# define UINT16_T unsigned int 
#endif 
             /* line 83*/ 
/* 
* The uchar_T, ushort_T and ulong_T types are needed for compilers which do 
* not allow defines to be specified, at the command line, with spaces in them. 
*/ 

typedef unsigned char uchar_T; 
typedef unsigned short ushort_T; 
typedef unsigned long ulong_T; 
+0

「testMacs.c」とは何ですか?このエラーは '#include'の前に何かがあることを示唆しています。 – geekosaur

+0

'C:/ Programs/MATLAB/R2007b/extern/include/tmwtypes.h'の83行目ですか?つまり正しいディレクトリで探していますか?空白行にエラーを投げることはあまり意味がありません。 –

答えて

3

math.hが処理されているとき、それは_BEGIN_STD_Cが定義されていないように思える(だけでなく、おそらくいくつかの他のマクロ)。しかし、それは_ansi.hによって処理されているはずです(少なくとも_BEGIN_STD_C)。

-Mオプションでコンパイルして、正しいヘッダーが含まれていることを確認したり、-Eでコンパイルして、プリプロセッサの出力を確認してください。これらのうちの1つが問題を指摘するはずです。

+0

これは私が多くの異なるソースから_asni.hファイルが含まれていたことが分かりました。 – fengels

関連する問題