strdup() 函数

2024-04-12

我最近意识到strdup()我在 OS X 上经常使用的函数不是 ANSI C 的一部分,而是 POSIX 的一部分。我不想重写所有代码,所以我想我会编写自己的代码strdup()功能。其实这并不难,只是一个malloc() and a strcpy()。无论如何,我有这个函数,但是如果我编写这个函数并将其链接到我的代码,并且它已经存在于 libc 中,我该怎么办?我的链接器或编译器是否允许我基本上定义我自己的函数版本,或者我是否必须给它另一个名称?如果有一种方法可以重用相同的名称,那将非常方便,这样如果strcpy()存在于用户的 libc 中,他们可以使用它,但如果它不存在于他们的 libc 中,他们可以使用我的版本,并且尽可能少地更改代码。

简短版本:

a) 当我编写自己的函数与内置函数同名时会发生什么?

b) 我该怎么做才能避免在不具备此功能的平台上发生不好的事情strdup()无需重写我所有的代码以不使用strdup(),这有点乏味?


通常,您只需使用#if在某个编译器下定义你想要的函数。如果内置库没有定义strdup,那么自己定义它没有问题(除非他们将来定义了它,你就必须把它拿出来。)

// Only define strdup for platforms that are missing it..
#if COMPILER_XYZ || COMPILER_ABC
char *strdup(const char *)
{
   // ....
}
#endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

strdup() 函数 的相关文章

  • 检测到 NuGet 包的版本冲突

    我正在开发 ASP Net core 2 1 Web 应用程序项目 我的解决方案中有 1 个项目和 3 个其他库 它是高级架构 数据访问层 DAL 业务层 BL 公共层 CL 所以我需要添加引用来连接一些库和项目 我已经添加了CL参考我的项
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐

  • 在 Android 2.x 中获取 ActionBarSherlock actionBarSize

    我正在使用 ActionBarSherlock 此 XML 行在 Android 2 x 中崩溃 android layout height android attr actionBarSize 有没有办法获取 ABS 的 ActionBa
  • Flutter Webview - 在浏览器或窗口中打开外部链接

    我有一个使用 Flutter Webview 制作的 Android 应用程序 当用户单击外部链接时 我希望该链接在浏览器中打开 我该怎么做 事实上 像 Instagram 那样在窗口中打开外部链接会很好 有没有办法做到这一点 Edit w
  • 具有两个参数的自定义 Liquid 标签

    如何编写 调用带有两个参数的自定义 Liquid 标签 上下文 Jekyll 2 1 1 我有一些页面作为选项卡集呈现 我的页面前部允许为某些页面定义额外的选项卡 如下所示 blah blah extra tabs A page a pag
  • 我可以使用JS序列化当前的DOM吗?

    我想使用 javascript 将 DOM 树的当前状态序列化为字符串 虽然我更喜欢 html 但结果格式并不重要 是否有捷径可寻 作为记录 我想使用 PhantomJs 自动下载页面 使用 js 脚本操作它 并保存页面的当前状态 但不是图
  • 减去 r 中的时间

    我有一个包含两个时间变量的数据集 EndVisitTime and BoxTime 我每天都会制作数据集 因此这些观察结果都是在一天内进行的 Date lt 2014 8 12 EndVisitTime lt c 00 00 32 00 0
  • Pandas:如果字符串存在于几列中的任何一列中,我想对计数进行求和,并将该计数添加到具有搜索术语的另一个数据框中

    我有一个视频数据框 其中包含几列标签 字符串 如下所示 import pandas as pd videos 1 cool video drama horror 2 great video sports drama 3 super vide
  • Flutter - 如何下载视频并将其保存到内部存储?

    我正在 flutter 中开发一个项目 我需要实现从服务器下载视频功能 我正在考虑使用 Dio 库并将下载的视频保存到getApplicationDocumentsDirectory 但我还没有找到我想要实现的目标的示例 我尝试了一些示例并
  • 什么是守护进程?它们的实际用途是什么?与php一起使用?

    有人能用两个词解释一下什么是守护进程以及它们在 php 中的用途吗 我 知道这是一个进程 一直在运行 但我不明白它在 php 应用程序中有什么用 有人可以给出使用示例吗 我可以使用守护进程来减少应用程序的内存使用量吗 据我了解 守护进程可以
  • 在 Scala 中模拟可变参数模板

    假设你想要类似的东西可变参数模板 http en wikipedia org wiki Variadic Templates 为泛型类定义 n 个类型参数的能力 在 Scala 中 例如你不想定义Tuple2 T1 T2 and Tuple
  • jQuery 可排序/禁用选择问题

    我的 jQuery 可排序列表出现问题 其中文本被选中 我发现了这个功能disableSelection 但似乎无法让它发挥作用 这是js ul current projects sortable placeholder drop zone
  • 如何在 Asp.net C# 中使用 LDAP 在 Active Directory 中搜索用户

    如何在 asp net c 中从 Active Directory 服务器获取所有记录 在中创建连接字符串LDAP提供username and Password可以与服务器通信并具有管理员权限 假设直流电是me com and userna
  • 当c#程序崩溃时如何知道原因?

    我的程序经常因某种原因崩溃 在这种情况下 我确实看到带有 关闭 按钮的 Windows 消息 每次发生这样的事情我都非常想知道到底发生了什么 感谢社区 我已经知道如何 处理 某些情况 我在程序的开头添加了这样的代码 static void
  • 在简单的 CSS 工具提示上淡入和淡出

    新手问题 尝试制作一个简单的 css 工具提示来淡入和淡出 但无法使其工作 搜索了很多但找不到简单的答案 我假设我把过渡 css3 放在错误的地方 但它在其他地方也不起作用
  • 具有动态名称的 Django 模型字段

    我想通过一种常见的 mixin 或抽象模型向现有模型添加新的 CharFields 但这些字段的名称取决于配置 因此 一个模型将具有 someprefix1 title 字段 而另一个模型将具有 someprefix2 title 字段 是
  • 检查 Spark 中矩阵每列中唯一值的数量

    我有一个 csv 文件当前存储为 Spark 中的数据框 scala gt df res11 org apache spark sql DataFrame 2013 03 25 12 49 36 000 string OES PSI603
  • iOS 8 - 切换控件后,即使在纵向模式下,旋转也会使状态栏消失

    我在 iOS 8 中新的状态栏自动隐藏功能中遇到了很多麻烦 在我的应用程序中 我有一个视图 当用户点击一次时 导航栏和状态栏就会消失 在横向时 状态栏会自行隐藏 这对我来说很好 我只需要在纵向模式下使用它 但问题是 当设备处于横向状态并显示
  • 当 Gmail 以编程方式用作 POP3 服务器时,它会表现出哪些非标准行为特征?

    我正在尝试准备一份完整的 Gmail POP3 行为列表 您通常不会期望在 POP3 服务器中找到这些行为 例如 Gmail 似乎会忽略来自 POP3 客户端的 DELE 删除 命令 相反 它实施自己的删除和归档策略 准备列表的目的是避免开
  • 在 C 中将二叉树转换为数组(并随后保存)

    所以 我正在做这个客户应用程序 您可以在其中创建 修改 搜索 列出客户 后来 这扩展到通过订单等方式将客户与产品联系起来 但我现在的重点只是客户 我已经创建了一个二叉树 所有这些功能都可以工作 但是我需要一种方法来存储创建的客户以供下次使用
  • 使用 Apache POI 更新 excel 文件

    我正在尝试使用 Apache POI 更新现有的 Excel 文件 每次运行代码时 我都会收到如下所示的错误 我也尝试过 FileInputStreamNewFile 的东西 Exception in thread main java la
  • strdup() 函数

    我最近意识到strdup 我在 OS X 上经常使用的函数不是 ANSI C 的一部分 而是 POSIX 的一部分 我不想重写所有代码 所以我想我会编写自己的代码strdup 功能 其实这并不难 只是一个malloc and a strcp