C 错误 : expected `=' , `,' 、 `;' 、 `asm' 或 `__attribute__' 之前

标签 c cygwin powerpc

我正在尝试在 cygwin 下为 565 powerPC 编译 matlab 生成的代码。 当我执行以下编译命令时:

@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 是标准的未更改头文件。

有谁知道我做错了什么或者我缺少编译器选项。

代码片段: 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   

数学.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;

最佳答案

在处理 math.h 时,似乎未定义 _BEGIN_STD_C(可能还没有定义其他一些宏)。但是,(至少 _BEGIN_STD_C)应该由 _ansi.h 处理。

尝试使用 -M 选项进行编译,以确保包含正确的 header 和/或使用 -E 进行编译,以便您可以查看预处理器输出。其中之一应该指出问题。

关于C 错误 : expected `=' , `,' 、 `;' 、 `asm' 或 `__attribute__' 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293202/

相关文章:

比较两个内存块之间的值是否相等

c - 我在 K&R 练习 1-13 中的尝试使条形图太长

linux - Cygwin - 设置 $PATH

cygwin - 如何使用 apt-cyg 添加存储库

linux - 我可以在使用 oProfile 时指定一个 CPU 内核吗?

PowerPC 440EP 和 PowerPC E300C3 上的 Node.js "Illegal instruction"

c - 通过 http 使用套接字发送结构

makefile - 如何在 Cygwin 中运行 makefile

cocoa - 为什么这个应用程序不能在 PowerPC G4 上运行

c - 使用 MPLAB 编译器解析以逗号分隔的字符串?