首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C代码库中找到参数类型列表的用法?

如何在C代码库中找到参数类型列表的用法?
EN

Stack Overflow用户
提问于 2016-12-01 05:24:51
回答 3查看 109关注 0票数 1

最近我了解到,在C中有一些可以为空的参数类型列表

代码语言:javascript
运行
AI代码解释
复制
int print();

int main() {
    print("hallo");    //   << valid but highly unintuitive
}

int print() {
}

在这段代码中,可能有人忘记了编写print(void) (可能是C++开发人员),但其他人提供了一个参数。编译不显示任何警告或错误:

代码语言:javascript
运行
AI代码解释
复制
$ make test -Wstrict-prototypes -Wimplicit -Wimplicit-function-declaration -Wall
cc     test.c   -o test

我没有找到一个编译器标志,它警告空参数类型列表,只警告隐式函数声明。

我能做些什么来帮助我找到给定代码库中参数类型列表的所有用途吗?

例如。

  • 让C++编译器将C代码编译为C++和解决类型问题(如果声明没有列出参数,则C++不允许参数)
  • 让编译器列出所有函数声明(如果可能的话不知道),并手动搜索空大括号
  • 参数类型列表的greping (对我来说太复杂了:)
  • 通过编译器开关禁用参数类型列表(没有找到)
EN

回答 3

Stack Overflow用户

发布于 2016-12-01 06:22:11

在gcc的帮助下,使用

-如果函数是声明或定义的,而没有指定参数类型,则警告--原型(C和Objective)。(如果前面有指定参数类型的声明,则允许在没有警告的情况下使用旧式函数定义。)

通过你的例子,它给出了:

代码语言:javascript
运行
AI代码解释
复制
hallo.c:1:5: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
 int print() {
     ^

但是,您必须确保正确定义现有代码中的所有非严格函数声明;特别是,没有参数的函数应该用(void)声明,如下所示:

代码语言:javascript
运行
AI代码解释
复制
 int print(void);
票数 2
EN

Stack Overflow用户

发布于 2016-12-01 06:31:18

您的示例在C中和C++中都是无效的。由于您的print()函数不接受任何参数--这是从您提供的函数定义(C2011,6.7.6.3/14)中很好地建立起来的--因此使用参数调用它是不一致的,无论在调用点是否可以看到原型(C2011,6.5.2.2/6)。如果调用出现在一个函数定义和任何真正的原型都不可见的作用域中,那么编译器可能仍然接受代码,但这并不使其有效,也不能保证它能够工作。

另外,你似乎使用了错误的术语,或者你的想法可能是非常错误的。参数类型列表是声明(和定义)函数的现代方法,包括函数原型:

代码语言:javascript
运行
AI代码解释
复制
int my_func(int a, char *b);
//          ^^^^^^^^^^^^^^----- parameter-type-list

您应该而不是消除这些,但是我认为您的意思是要识别和修复K&R风格的函数定义,以及没有参数类型列表的函数声明。( K&R样式的形式语法是“标识符列表”,如果需要,还附带“声明列表”)。

至于自动识别K&R风格声明的出现,这是C语言解析器的一项工作,其中最常见的实现是C编译器。您的编译器可能有您想要的选项。例如,GCC有-Wstrict-prototypes-Wold-style-defintion选项,这两种选项将同时表示非原型的函数声明和K&R风格的函数定义。GCC还有其他一些你可能也感兴趣的选择,比如-Wimplicit-Wtraditional-Wc++-compat

票数 1
EN

Stack Overflow用户

发布于 2016-12-01 06:12:00

您只需要查找() (带有可选空格),然后是{ (带有可选空格,也许是换行符)。你可以用(void)代替它。

如果您想要一个“工业级别”解决方案,您可以使用一个编译器来发布一些更易于解析的内容,比如GCC-XML嘎吱声

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40911835

复制
相关文章
Excel 如何保存文件为 UTF-8 CSV 格式
如果你的 CSV 在 Excel 在默认打开的时候是简体中文的,但是你在保存的时候没有保存为 UTF-8 的格式,那么你文件中的简体中文可能会显示为乱码。
HoneyMoose
2020/09/03
3.8K0
Excel 如何保存文件为 UTF-8 CSV 格式
SparkSQL保存DataFrame为CSV文件
ReadShipMMSITwo package com.xtd.file import java.io.{ BufferedWriter, File, FileWriter} import java.util import com.xtd.entity.RouteLine import com.xtd.example.SparkOpenGIS import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, Dataset,
静谧星空TEL
2021/04/27
2.7K0
SparkSQL保存DataFrame为CSV文件
解决CSV文件中长数字以科学记数格式保存问题
源文件(xlsx格式)中的单元格格式设置为「文本」,默认为「常规」,这是因为「常规」格式存在: 纯数字(位数 ≥ 12)自动转换为「科学记数」 格式;如 123456789012 转化为 1.23457+11 输入的内容含有数字与字母e,且e处在第三位上,e后面为纯数字,也会自动转换为 「科学记数」格式,如输入颜色值 123e45 会转换为 1.23E+47, 输入1234e5 会转换为 1.23E+08 以「文本」格式保存的csv文件,用Excel格式打开,看到的仍可能是「科学记数」的方式,但以「文本编
Jace
2018/08/01
6.1K0
MySQL 查询结果保存为CSV文件
执行后,会把指定表中记录数据导出到c:/test.csv文件中。每个字段以,(逗号)分隔,字段内容是字符串的以”(双引号)包围,每条记录使用\r\n换行。如图所示
前端皮皮
2020/11/26
5.5K0
MySQL 查询结果保存为CSV文件
什么是CSV文件以及如何打开CSV文件格式
大家好,又见面了,我是你们的朋友全栈君。 What is a .csv file? CSV stands for Comma Separated Values. A CSV file is a pla
全栈程序员站长
2022/09/16
6.6K0
Matlab保存数据到csv文件的方法分享
一个同学咨询了一个问题,如何把matlab变量区的数据保存到csv文件里面,故此分享一下Matlab保存数据到csv文件的方法。csv其实也是一个txt,只不过csv是带特定格式的txt而已,举个例子,编辑一个txt文件,内容如下
用户9925864
2022/07/27
6.3K0
Matlab保存数据到csv文件的方法分享
csv文件格式说明[通俗易懂]
csv文件应用很广泛,历史也很悠久。有很多种类型的csv格式,常用的是rfc 4180定义的格式。
全栈程序员站长
2022/09/20
1.4K0
【python】使用csv库以字典格式读写csv文件
1、使用csv.DictWriter()写入字典格式的数据 import csv with open('test.csv', 'w', newline='') as csvfile: fieldnames = ['first_name', 'last_name'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() writer.writerow({'first
西西嘛呦
2020/08/26
1.8K0
【python】使用csv库以字典格式读写csv文件
短短几行代码将数据保存CSV和MySQL
数据我就按比较常见的列表嵌套字典来演示了,这种数据结构也是在各个场景下经常用到的数据结构[{},{},{}…]
福贵
2020/02/17
2.1K0
如何使用Python将图像转换为NumPy数组并将其保存到CSV文件?
Python 是一种功能强大的编程语言,具有大量的库和模块。其中一个库是 NumPy,它用于数值计算和处理大型多维数组和矩阵。另一个用于Python图像处理的流行库是Pillow,它是Python Imaging Library(PIL)的一个分支。
很酷的站长
2023/08/11
9110
如何使用Python将图像转换为NumPy数组并将其保存到CSV文件?
爬取豆瓣电影详细数据,保存为CSV文件
爬取时间:2020-03-12 爬取难度:★★☆☆☆☆ 请求链接:https://movie.douban.com/top250 以及每部电影详情页,图片 爬取目标:爬取榜单上每一部电影详情页的数据,保存为 CSV 文件 涉及知识:request、urllib、bs4、CSV 和二进制数据储存、列表操作 一、循环爬取网页模板 打开豆瓣电影top榜单,请求地址为:https://movie.douban.com/top250 通关观察,我们可以发现每页展示25条电影信息,多次翻页我们可以观察到u
不温卜火
2020/10/28
5.5K0
爬取豆瓣电影详细数据,保存为CSV文件
python中如何打开csv文件_python如何读取csv文件
python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。
全栈程序员站长
2022/09/16
8.3K0
python中如何打开csv文件_python如何读取csv文件
Python读写CSV格式文件
CSV(Comma Separated Values)格式的文件常用于电子表格和数据库中内容的导入和导出。Python标准库csv提供的reader、writer对象和DictReader和DictWriter类很好地支持了CSV格式文件的读写操作。 >>> import csv >>> with open('test.csv', 'w', newline='') as fp: test_writer = csv.writer(fp, delimiter=' ', quotechar='"') #创建wr
Python小屋屋主
2018/04/16
1.1K0
python 读写csv格式的文件
python在它的标准库中包含了csv模块。 例子环境 python3.4 win7 32位
py3study
2020/01/10
9700
Python操作CSV格式文件
参考文档:https://docs.python.org/3.6/library/csv.html
全栈程序员站长
2022/09/16
1K0
Python操作CSV格式文件
CSV文件
CSV文件:Comma-Separated Values,中文叫,逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据。该文件是一个字符序列,可以由任意数目的记录组成,记录间以某种换行符分割。每条记录由字段组成,字段间的分隔符是其他字符或者字符串。所有的记录都有完全相同的字段序列,相当于一个结构化表的纯文本形式。 用文本文件、EXcel或者类似与文本文件的都可以打开CSV文件。
狼啸风云
2020/02/11
2.7K0
导出CSV格式
/** * 导出数据格式为csv */ function export_to_csv($data = array(), $title = array(), $filename=null) { if(empty($filename)) { $filename = date('Ymd'); } header("Content-type:text/csv"); header("Accept-Ranges:bytes"); header("Content
苦咖啡
2018/04/28
1.9K0
一、通过requests库爬取数据并保存为csv文件
此系列第一篇呀 一、选择数据源 网址:https://wp.m.163.com/163/page/news/virus_report/index.html?nw=1&anw=1 好了知道上面的我们就可
不温卜火
2020/10/28
1.6K0
一、通过requests库爬取数据并保存为csv文件
点击加载更多

相似问题

TypeError:“tuple”对象在尝试调用方法时不可调用

10

类方法TypeError "Int对象不可调用“

16

TypeError:对象不可调用

21

TypeError:“a”对象不可调用

11

TypeError TypeError:“NoneType”对象不可调用

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档