C-Fehler: erwartet`=', `,', `;', `asm' or `__attribute__' before
Ich versuche zu kompilieren matlab generierten code für 565 powerPC unter cygwin.
Wenn ich führen Sie den folgenden Befehl kompilieren:
@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
Bekomme ich die folgende Fehlermeldung:
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'
Die Mathematik.h rtwtypes.h sind standard unverändert in den header-Dateien.
Weiß jemand, was ich falsch mache oder übersehe ich eine compiler-option.
Code 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;
- Und was ist
testMacs.c
? Die Fehlermeldung legt nahe, dass Sie etwas haben, bevor der#include
s, die nicht da sein sollte. - Sind Sie sicher, dass die Linie 83 von
C:/Programs/MATLAB/R2007b/extern/include/tmwtypes.h
- d.h., dass Sie suchen, in das richtige Verzeichnis? Ausgabe einer Fehlermeldung auf eine leere Zeile macht nicht viel Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, wie
_BEGIN_STD_C
ist nicht definiert wird (sowie vielleicht noch einige andere Makros), wennmath.h
verarbeitet wird. Jedoch, dass (zumindest_BEGIN_STD_C
) sollte wurden betreut von_ansi.h
.Versuchen, kompilieren mit der
-M
option, um sicherzustellen, dass die richtigen Header aufgenommen werden und/oder kompilieren mit-E
so können Sie sich auf der Präprozessor-Ausgabe. Einer von diesen sollte, zeigen Sie das problem.