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