首页 > 其他分享 >C语言GCC编译错误(收集)

C语言GCC编译错误(收集)

时间:2023-04-10 09:57:34浏览次数:40  
标签:__ GCC 01 06 04 UDP server 编译 C语言

错误一: 实参类型不兼容

这是Linux 下编写的 UDP 方式通信的服务器端代码:

int ret_rec = recvfrom(soc_fd, // 上面定义的 UDP 套接字
			      msg,	// 接收数据缓存区
			      128,	// 接收数据缓冲区,大小
			      0,	//	和发送端一样的标记 
			      from_addr, // 对方网络地址
			      &addrlen);

上面这段代码编译报错:

图版本:

 文字版本:

 1 [root@CentOs7 06-wangluobiancheng]# gcc 06-04-01.UDP-server.c -o server.out
 2 06-04-01.UDP-server.c: 在函数‘main’中:
 3 06-04-01.UDP-server.c:69:12: 错误:‘recvfrom’的第 5 个实参类型不兼容
 4             &addrlen);
 5             ^
 6 In file included from 06-04-01.UDP-server.c:14:0:
 7 /usr/include/sys/socket.h:175:16: 附注:需要类型‘struct sockaddr * __restrict__’,但实参的类型为‘struct sockaddr_in’
 8  extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
 9                 ^
10 [root@CentOs7 06-wangluobiancheng]# 

分析

recvfrom 函数有6个参数,提示说第5个参数有问题, 但显示的是第6个参数,所以这里是 gcc 的一个坑,要注意。

要看看前后上下文,是否有问题。

解决方法

from_addr 改成 (struct sockaddr *)&from_addr 即可。 

---------------------------------------------------------------------------------------

 

错误二: 内建函数‘calloc’不兼容

图片版:

 文字版:

1 [root@CentOs7 06-wangluobiancheng]# gcc 06-04-01.UDP-server.c -o server.out
2 06-04-01.UDP-server.c: 在函数‘main’中:
3 06-04-01.UDP-server.c:62:14: 警告:隐式声明与内建函数‘calloc’不兼容 [默认启用]
4   char *msg = calloc(128,1);
5               ^
6 [root@CentOs7 06-wangluobiancheng]# 

分析

  不兼容提示,大部分是没有 “头文件”,即便不管错误,运行时候也会提示 “段错误”。

解决方法

  增加头文件,如果不知道函数头文件是什么, 用 man calloc 的方式,查看 man 手册。

---------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

-

int ret_rec = recvfrom(soc_fd, // 上面定义的 UDP 套接字    msg,// 接收数据缓存区    128,// 接收数据缓冲区,大小    0,//和发送端一样的标记     (struct sockaddr *)&from_addr, // 对方网络地址    &addrlen);

标签:__,GCC,01,06,04,UDP,server,编译,C语言
From: https://www.cnblogs.com/wutou/p/17301846.html

相关文章

  • VS2019使用C语言进行websocket编程
    一直在写C#代码好多年不写C语言代码了,记录一下之前某个项目里用C写的一个websocket服务,用C的优势是写的东西体积小性能高,但是写业务的话还得用C#、Java之类的语言,不然会折腾死人。。。 用VisualStudio新建一个C++(因为不能直接建C语言项目)项目,我演示就创建一个控制台项目。项......
  • 【 2023 】近期一些编译调试开发 Android7&9 系统的笔记( h616 / imx8m / rk3399 )
    主要就记录一下自己食用过程中遇到的一些问题吧,板子有新有旧,但都差不多。待整理呢。https://stackoverflow.com/questions/67363030/rebuild-android-code-with-error-ssl-error-when-connecting-to-the-jack-server-thttps://note.qidong.name/2017/07/disable-jack-server/......
  • 一些书上不怎么讲的编译器优化方法
    目录1一些书上不怎么讲的编译器优化方法1.1内容预览1.2JIT-JustInTimeCompilation1.2.1单层编译器1.2.2解释器+编译器1.2.3FDO-Feadback-DirectedOptimization1.3AOT-AheadOfTimeCompilation1.3.1LTO-Link-TimeOptimization1.3.2FDO-......
  • wsl,64位机,编译共享库
    难得的周日,看了些动态链接的文章。IOT物联网小镇自己也想编译一个动态库,中间遇到了一些问题。写篇文章记录下。b.c代码#include<stdio.h>intb=30;voidfunc_b(void){printf("infunc_b.b=%d\n",b);}a.c代码如下.a.c依赖b.c#include<stdio.h>//内部定义......
  • 编译安装指定版本的bind9
    下载所需的版本https://gitlab.isc.org/isc-projects/bind9/-/tags?sort=version_desc搜索自己需要的版本,然后点击下载安装#新建用户$groupadd-g53-rnamed$useradd-u53-g53-rnamed#解压源码包$tarxfbind9-v9_11_36.tar.gz$cdbind9-v9_11_36/#安装必......
  • golang 编译碰到问题 Package python-2.7 was not found in the pkg-config search pa
    golang运行单测或者编译程序时提示需要配置PKG_CONFIG_PATH环境变量,原因是在程序里使用了go-python包,要求运行环境有python2.7,并设置PKG_CONFIG_PATH环境变量,解决方案如下:#pkg-config--cflags--python-2.7Packagepython-2.7wasnotfoundinthepkg-configsear......
  • 自用纯C语言实现任务调度(可用于STM32、C51等单片机)
    前言  这个任务调度模块的实现是形成于毕设项目中的,用在STM32中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。任务调度模式结构  整体上的结构属于......
  • C语言程序环境
    前言早期的程序员,使用的是二进制语言编写代码,之后发展出汇编语言,B语言,C语言等等,其中,二进制语言是机器可以识别的语言,但对于程序员来说理解可能较为困难,发展到C语言时,我们所写的代码已经经过不断优化,使得程序员能清晰的明白代码的含义,但最终,我们要想机器识别出我们所写的代码,还需要......
  • C语言的回调函数原来这么简单
    手机端阅读:C语言的回调函数原来这么简单 了解开发语言的朋友应该都会对回调函数有所了解,在很多的程序开发语言中都能看到回调的身影。很多场景下,当某个条件成立以后我们希望代码执行某些指定的部分,这个时候可以考虑使用回调函数的方式,这样做思路更加的清晰,也能使代码结构的逻辑更加......
  • 算法学习之冒泡排序【C语言】
    冒泡排序排序规则冒泡排序的规则是相邻的两个数字依次比较,如果前面的数字比后面的数字大,则交换它们的位置,否则保持不变,直到遍历完所有的数字。这个过程会不断地进行,直到所有的数字都按照从小到大的顺序排列好。双层循环在冒泡排序的算法中,需要使用两层循环来实现排序功能。for(int......