Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 意外标记“”附近的语法错误(';_C - Fatal编程技术网

C 意外标记“”附近的语法错误(';

C 意外标记“”附近的语法错误(';,c,C,下面是我的代码,它一直告诉我第10行导致了“意外标记附近的语法错误”()但是我不知道为什么。我正在添加一个已经编写好的代码,但是它说有错误的部分并不是我添加的部分。所以我很困惑为什么会出现这个错误。我还想知道这个错误的真正含义 #include <stdio.h> #include <stdlib.h> #include <string.h> #include "applanix_data.h" #include "applanix_pos_out.h"

下面是我的代码,它一直告诉我第10行导致了“意外标记附近的语法错误”()但是我不知道为什么。我正在添加一个已经编写好的代码,但是它说有错误的部分并不是我添加的部分。所以我很困惑为什么会出现这个错误。我还想知道这个错误的真正含义

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "applanix_data.h"
#include "applanix_pos_out.h"

#define DEGREES2RADIANS  (3.141592654 / 180.0)

int output_group_1(FILE *fp,     /* This is line 10 */
               FILE *fpout,
               unsigned short myyear,
               unsigned short mymonth,
               unsigned short myday,
               double time_sod,
               double double_time_met)
{
struct applanix_data_group1 data1;
struct pospacsbet sbet;

if(fread(&data1,sizeof(struct applanix_data_group1),1,fp)==1)
 {
    sbet.gpstime = time_sod;
    sbet.latitude = data1.latitude * DEGREES2RADIANS;
    sbet.longitude = data1.longitude * DEGREES2RADIANS;
    sbet.altitude = data1.altitude;
    sbet.x_velocity = data1.eVelocity;
    sbet.y_velocity = data1.nVelocity;
    sbet.z_velocity = data1.dVelocity;
    sbet.roll = data1.aircraftRoll * DEGREES2RADIANS;
    sbet.pitch = data1.aircraftPitch * DEGREES2RADIANS;
    sbet.platform_heading = data1.aircraftHeading * DEGREES2RADIANS;
    sbet.wander_angle = data1.aircraftWanderAngle * DEGREES2RADIANS;
    sbet.x_body_acceleration = data1.aircraftTransverseAcceleration;
    sbet.y_body_acceleration = data1.aircraftLongitudinalAcceleration;
    sbet.z_body_acceleration = data1.aircraftDownAcceleration;
    sbet.x_body_angular_rate = data1.aircraftAngularRateAboutDownAxis;
    sbet.y_body_angular_rate = data1.aircraftLongitudinalAcceleration;
    sbet.z_body_angular_rate = data1.aircraftAngularRateAboutDownAxis;

    if(fwrite(&sbet,sizeof(struct pospacsbet),1,fpout)!=1)
      {
         fprintf(stderr,"Error writing POSPAC SBET output!\n");
         exit(-2);
      }

    sbet.latitude1 = sbet.latitude * (180/3.141592654);
    sbet.longitude1 = sbet.longitude * (180/3.14592654);
    sbet.day = sbet.gpstime/86400;
    sbet.time = sbet.gpstime/86400;
    sbet.hour1 = (sbet.time - sbet.day);
    sbet.hour = sbet.hour1*24;
    sbet.time = sbet.hour1*24;
    sbet.minute1 = (sbet.time - sbet.hour);
    sbet.minute = sbet.minute1*60;
    sbet.time = sbet.minute1 * 60;
    sbet.second1 = (sbet.time - sbet.minute);
    sbet.second = sbet.second1*60;


    printf("%12.8f, %12.8f, %6.3f, %i:%i:%4.2f\n",sbet.longitude1,sbet.latitude1,sbet.altitude,sbet.hour, sbet.minute, sbet.second);
    return 0;
 }
 else
  return -1;
}

正如他在评论中所提到的,检查包含的两个头文件中的代码。错误消息应该告诉您错误发生的确切位置。查看错误中所列行之前的一两行,确保语法正确。此错误几乎总是由缺少的
{
,等等。

这不是编译器语法错误,而是shell错误

您正在尝试直接执行C源代码。系统假定该文件为shell脚本

您需要将其编译为可执行文件,然后运行可执行文件:

$ gcc applanixraw2out.c -o applanixraw2out
$ ./applanixraw2out [arguments]
在评论中,你说你做了以下事情:

unix> g++ applanixraw2out.c
unix> ./applanixraw2out.c applanix_raw_20120508.bin > test.txt
./applanixraw2out.c: line 10: syntax error near unexpected token ('
< > >代码> G++< /Cult>命令是C++代码;代码为C,因此应使用<代码> GCC < /C> >

您必须指定可执行文件的名称,这通常是删除
.c
后的源文件名。如果不指定,则默认情况下
g++
gcc
都会生成名为
a.out
的可执行文件(出于历史原因)。使用
-o
选项覆盖该默认值

此外,为了获得该语法错误,您必须执行以下操作:

$ chmod +x applanixraw2out.c

在不打算执行的文件上设置执行权限是,但应该避免,因为这样会使这样的错误更难以追踪。

applanix\u pos\u out.h的末尾可能有一个错误。错误在这段代码之前。我刚刚用
clang-Wall-c
编译了这段代码,它编译得很好t没有任何错误或警告。我不是在编译它时得到错误的,而是在我尝试运行itunix>g++applanixraw2out.c unix>/applanixraw2out.c applanix_raw_20120508.bin>test.txt时得到错误的。applanixraw2out.c:第10行:意外标记附近的语法错误
('./applanixraw2out.c:第10行:
int output\u group\u 1(文件*fp,@H2CO3:这不是编译器错误,是shell错误。请看我的答案。猜得好,但不是这样;请看我的答案。公平地说,这是在我们意识到海报试图直接运行源代码之前发布的。
$ chmod +x applanixraw2out.c