由 gcc 检查的 printf() 包装参数

2023-11-21

当Cprintf()它的家族是由gcc and -Wall在命令行上使用时,编译器会根据正在使用的格式字符串警告错误放置的参数。例如,下面的代码会收到一条错误消息,指出格式指定了 3 个参数,但实际上您只传递了两个。

printf("%d%d%d", 1, 2);

当写一个包装器到printf(),如何保持这种能力?我能想到的是函数或宏的形式。但简单的解析器也是可以接受的。

可以在 stackoverflow 上找到编写 printf 包装器的几种方法。两种常见的方法是将 vprintf 与 varargs 一起使用, and 使用 __builtin_apply。我已经尝试过这两种方法,但没有任何效果。


你可以使用海湾合作委员会format函数属性,以便根据格式字符串检查参数。

extern int my_printf (void *my_object, const char *my_format, ...)
           __attribute__ ((format (printf, 2, 3)));

检查 gcc 手册《6.31.1 常用功能属性》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由 gcc 检查的 printf() 包装参数 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 将两个 NSArray 并排排序

    我有几个需要并排排序的数组 例如 第一个数组的名称为 Joe Anna Michael Kim 和 另一个数组保存地址 Hollywood bld Some street 3 That other street country road 数
  • 将 SSL 证书添加到密钥库

    有人可以指导我如何将证书添加到密钥库 Android 手机 示例代码会很有帮助 您需要的密钥库格式位于 BouncyCastle jar 中 您需要下载该文件 然后您创建密钥库 最后 您需要扩展 HTTPClient 有一个简单的例子说明如
  • 如何处理 momentjs 中的弃用警告

    我想使用 momentjs 检查无效的日期 时间字符串 var invalid 2017 03 18 23 00 00 if moment invalid isValid return valid date 这 正确地 抛出了一个堆栈跟踪
  • 在对话框中选择微调器时,Android espresso 中出现 RunTimeException

    我有一个活动 其中打开了一些对话框 该对话框上有一个微调器 我想在此微调器中选择一个特定值 但出现以下异常 java lang RuntimeException Waited for the root of the view hierarc
  • ajax调用JQUERY中的变量数据

    我试图在 jquery 的 AJAX 调用中使用变量 但它不起作用 move 变量包含不同的值 请检查以下代码 var move next ajax type POST url somephp php data move 1 建议在数据中使
  • Slack 一次将多条消息发布到一个频道

    我需要将多个机器人回复 动态确定的响应 发布到同一频道 最明显的方法似乎是使用此 API 方法连续为每条消息执行 HTTP POST https api slack com methods chat postMessage 有没有办法将消息
  • 在 gnuplot 中绘制具有多个记录的一维二进制数组 (uint8)

    我知道这个问题类似于Gnuplot 如何从二进制格式绘制多个时间序列 但是我已经设置了一个略有不同的示例 所以希望可以发布 自我回答如下 我正在生成这样的二进制数据 见下文genbindata plPerl 脚本 perl genbinda
  • 使用 XLSX 导出 html 表(表到工作表)时隐藏/删除列

    我希望能够以 Excel 文件格式导出我的 DOM 表格 我的函数 Typescript 3 5 Angular 8 ExportTOExcel const ws XLSX WorkSheet XLSX utils table to she
  • Bash - 正确清除最后的输出

    我正在尝试创建一个可更新的进度状态 为了做到这一点 我需要能够完全清除最后的输出 以便我可以更新它 回车可以工作 但是当输出长于终端宽度并回绕时 将无法清除最后一个输出 所以我使用 tput n 0 while n ne 100 do n
  • 在 MySQL 中存储 SHA1 哈希值

    当我想将 SHA1 哈希结果存储在 MySQL 数据库中时 我有一个简单的问题 应该多长时间VARCHAR我存储哈希结果的字段是什么 我会用VARCHAR适用于可变长度数据 但不适用于固定长度数据 因为 SHA 1 值是always160位
  • 如何延迟一个转换而不延迟另一个转换?

    我设置了两个转换 circle 我只希望不透明度有延迟 但我只能在两个过渡都进行的地方进行延迟 我的全部目标是在圆圈处于中间旋转时 即正好 90 度 改变不透明度 但我会自己计算时间 我只想知道如何仅延迟一次转换 circle backgr
  • 图像在模拟器中显示,但在 iPhone 设备上不显示

    因此 当我从设备运行应用程序时 图片就会显示出来 一切都运行良好 然而 当我转到该设备时 我运行的 38 张图片中大约有 10 张没有显示 我正在从 sqlite 数据库中提取图像的名称 并且我已经检查过 名称 大小写和所有内容都是正确的
  • 在 Django 中实现“开放时间”的任何现有解决方案

    我正在为一位希望能够更改营业时间的客户制作一个网站 对于他的每一个不同的商店 Django 是否有针对此类问题的现有解决方案 你是什 么意思 看起来很简单 根据您工作日的订单进行调整 如果您愿意 可以添加验证 但人们应该足够聪明 不需要对这
  • Django 创建自定义模型字段

    我正在尝试在 Django 中创建一个自定义字段 它将采用十进制货币值 例如 1 56 并将其作为整数 例如 156 保存在数据库中以存储货币值 这就是我到目前为止所拥有的 我已经设置了固定值来测试 class CurrencyField
  • 为什么考虑_all_requests_local 因 rspec 配置而失败

    rspec rails 2 7 0 导轨 3 0 10 邮政 Rails 3 1 错误捕获对我来说无关紧要 Code class ApplicationController lt ActionController Base unless R
  • Chrome 检查元素的奇怪问题

    When I load my page one of the images is higher than it is supposed to be When I right click Inspect element anywhere on
  • DatePicker 回发后消失

    我有一个与 jquery DatePicker 关联的 asp TextBox 此输入有一个更新文字控件的 onTextChangedEvent 所有这些代码都位于 UpdatePanel 内 因此文字控件会更改 但页面不会刷新 我面临的问
  • 最大样本

    如果我想对数字进行采样来创建向量 我会这样做 set seed 123 x lt sample 1 100 200 replace TRUE sum x 1 10228 如果我想采样 20 个总和为 100 的随机数 然后采样 30 个数字
  • Erlang 节点无法看到彼此

    我是 Erlang 新手 尝试在我的笔记本电脑上设置两个节点 在一个终端中我输入 eli elimayost erlang apps gt erl sname foo setcookie secret 在第二个终端中 eli elimayo
  • 由 gcc 检查的 printf() 包装参数

    当Cprintf 它的家族是由gcc and Wall在命令行上使用时 编译器会根据正在使用的格式字符串警告错误放置的参数 例如 下面的代码会收到一条错误消息 指出格式指定了 3 个参数 但实际上您只传递了两个 printf d d d 1