为什么在Ubuntu中构建时,该程序会产生语法错误?
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"
#include "sys/types.h"
#include "sys/stat.h"
int main()
{
time_t st_mtime;
printf("Hello\n");
return 0;
}
以下是我尝试构建此内容时获得的内容:
$ gcc -o test1 test1.c
test1.c: In function ?main?:
test1.c:10: error: expected ?=?, ?,?, ?;?, ?asm? or ?__attribute__? before ?.? token
test1.c:10: error: expected expression before ?.? token
检查预处理器输出:
$ gcc -E test1.c > test1.d
将第10行显示为:
time_t st_mtim.tv_sec;
只有当我同时包含“sys / stat.h”和& “time.h”文件。
答案 0 :(得分:5)
如果您grep
/usr/include
st_mtime
,则可以找到以下内容:
$ grep -r st_mtime /usr/include | grep define
/usr/include/x86_64-linux-gnu/bits/stat.h:# define st_mtime st_mtim.tv_sec
因此问题源于您使用变量名st_mtime
。