[技巧]C·gcc编译错误


../include/std_in.h:15:8: warning: extra tokens at end of #endif directive [-Wendif-labels]
 #endif // __STD_IN_H_
  链接,原则上#endif不需要参数,后面仅作为阅读;设置-ansi,会发出警告

../include/t_debug.h:7:1: error: C++ style comments are not allowed in ISO C90
 //成员偏移计算
 ^
链接,c89(-ansi)不支持这种注释,c99支持

std_file.c:36:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode
     for (int i = 0; i < valid_item_num; i++)
std_file.c:36:5: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code
链接,可见gcc也会提醒用户的版本问题(note提示)

std_file.c:109:14: warning: variable ‘pszString’ set but not used [-Wunused-but-set-variable]
     HI_CHAR *pszString[500]={0};
链接,写入但未读取,说明该变量是废弃变量,没有被使用(读取)的没有意义的。
std_file.c:121:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
链接,函数本身应该提供返回,但作者没有提供任何返回值

/usr/include/stdlib.h:285:13: note: previous declaration of ‘srandom’ was here
 extern void srandom (unsigned int __seed) __THROW;
             ^~~~~~~
链接,之前已经被定义了(可能是同名函数,但参数不同),C不可以重载。

/usr/lib/gcc/i686-linux-gnu/6/../../../i386-linux-gnu/crt1.o:在函数‘_start’中:
(.text+0x18):对‘main’未定义的引用
collect2: error: ld returned 1 exit status
链接1 链接2 链接3
3是最接近的,当时子层makefile的目标test缺少了依赖文件test.o,导致无法定义main函数,编译失败

t_string.c:14:29: warning: pointer targets in assignment differ in signedness [-Wpointer-sign]
         for (ps8ChildString = strtok(pszString, &s8SplitChar);
链接,指针的数据类型不匹配,单词signedness指出数据是否为有符号的意思,也就是数据长度正确,但符号匹配错误

t_string.c:52:16: warning: ‘exch_poniter’ defined but not used [-Wunused-function]
 static HI_VOID exch_poniter(HI_S32 *pa, HI_S32 *pb)
                ^~~~~~~~~~~~
链接1,解析这个警告
链接2,隐藏这个警告,包括其余的unused警告

你可能感兴趣的:(Linux,C/C++,点滴中的linux)