假设我不使用任何重载函数,有没有办法可以阻止所有名称修改? [复制]

2024-05-29

标题基本概括了所有内容。我知道我可以使用 extern“C”块来停止损坏(尽管我不完全确定应该将所述块放在哪里),但是有没有办法可以在整个程序中禁用它?如果我这样做,这会让从代码编译的库更容易与 luajit 的 FFI 等一起使用吗?

编辑:这被认为是重复的问题特定于 DLL 和 Visual C++ 编译器。我只是问一个一般的 C++ 问题。


正如您所提到的,使用以下命令禁用名称修改extern "C" { }语法来包围您不希望有损坏名称的函数声明

extern "C" {
    int foo(int x, int y);
    void bar(const char* cstr); 
}

如果您确定没有使用任何 c++ 特定功能,更简单的方法是使用 c 编译器来编译代码。例如GCC 工具链调用gcc代替g++.

UPDATE:
的优点extern方法是你仍然可以使用 C++ 功能来实现(在单独的.cpp编译单元),这在将代码编译为纯 C 代码时当然是不可能的。例如。

#include "MyExportAPI.h"
#include <string>

void bar(const char* cstr) {
    std::string s(cstr); // <<< Note!
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

假设我不使用任何重载函数,有没有办法可以阻止所有名称修改? [复制] 的相关文章

  • 是否可以使静态控件透明?

    我正在尝试实现一个静态控件 该控件刷新 更改文本 以响应每秒发生一次的某个事件 由于我不想每秒绘制整个客户区域 所以我决定使用静态控件 现在的问题是父窗口被蒙皮 这意味着它有自定义位图作为背景 而静态控件没有适应 所以我正在寻找使静态控件的
  • 为什么更新外键后引用约束会不一致?

    抱歉 这个模糊的标题很难用一句话来描述 我有 2 个实体User and UserAddress 其中 User 有 2 个外键DefaultInvoiceAddressId and DefaultDeliveryAddressId和 Us
  • 求 a 范围内的 pow(a^b)modN

    对于给定的b and N以及一系列a say 0 n 我需要找到ans 0 n 1 where ans i 没有a s为此pow a b modN i 我在这里搜索的是可能的重复pow a b modN对于一系列a 以减少计算时间 例子 i
  • HTML 文档

    有没有一个工具可以从 VS2010 生成的 XML 文档文件生成 HTML 页面 我在谷歌上搜索了这样的工具 但没有找到 我下载并安装了SandCastle 但我不明白如何使用它 尝试使用Sandcastle 帮助文件生成器 http sh
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 如何将 QSerialPort 模块添加到 CMake 中?

    我想将 QSerialPort 模块添加到 CMake 中 根据我的理解 我需要将QT 串口添加到 pro中 我只想使用 CMake 所以我尝试编译简单的 CMake 文件 但有错误 QtCore 正在工作 qDebug 可以毫无问题地显示
  • 如果 .txt 文件不存在,则创建一个,如果存在则追加新行

    我想创建一个 txt 文件并写入它 如果该文件已经存在 我只想添加更多行 string path E AppServ Example txt if File Exists path File Create path TextWriter t
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • OpenMP 循环数组访问中的错误共享

    我想利用 OpenMP 来并行执行我的任务 我需要将数组的所有元素减去相同的数量并将结果写入另一个向量中 两个数组都是动态分配的malloc第一个填充了文件中的值 每个元素都有类型uint64 t pragma omp parallel f
  • 内存不足异常

    我正在使用 C 和 asp net 开发一个网络应用程序 我一直收到内存不足的异常 该应用程序的作用是从数据源读取一堆记录 产品 可能是数百 数千 通过向导中的设置处理这些记录 然后使用处理的产品信息更新不同的数据源 虽然有多个 DB 类
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • Task.Delay 到底是如何工作的?

    他们说 Task Delay 是一个异步 Thread Sleep 为了测试这一点 我写了下面的代码 我希望立即打印 One 然后 3 秒后将打印结果变量 15 2 秒后 将打印 Two 但似乎并非如此 一 不会立即打印 3 秒后打印 On
  • 具有可导出私钥的证书的“错误密钥”例外

    我正在尝试使用非对称加密来加密然后解密文件 我已经使用 makecert 创建了一个测试证书并将其安装到我的个人本地计算机存储中 将来我必须在多个服务器上安装此证书 这就是为什么我使用 pe 标志创建它 即使用可导出的私钥 证书已成功创建并
  • 如何从与 C# lambda 集成(而非代理集成)的 Amazon API 网关获取正确的 http 状态代码?

    我正在使用 C lambda 与 API 网关集成 我希望 API 网关返回正确的错误代码 例如 400 404 500 等 API网关模块tf文件 provider aws version lt 2 70 0 region var aws
  • RC4 实现与 openssl 输出不匹配

    我的目标是在 C C 中实现 RC4 流密码 并确保它产生与使用时相同的输出openssl命令 按照伪代码维基百科 https en wikipedia org wiki RC4 该实现似乎有效 因为它可以加密和解密内容 但是 加密的输出与
  • Json.net 将数字属性序列化为字符串

    我正在使用 JsonConvert SerializeObject 序列化模型对象 服务器期望所有字段都是字符串 我的模型对象具有数字属性和字符串属性 我无法向模型对象添加属性 有没有办法将所有属性值序列化为字符串 我必须只支持序列化 而不

随机推荐

  • 为什么 Retrofit 会重新排序我的 QueryMap 参数?

    我正在尝试像这样查询 github api https api github com search repositories q created gt 2015 07 11 sort stars order desc perpage 25
  • 我如何知道用户是否单击了“后退”按钮?

    我正在使用锚点来处理 ajaxy 网站的唯一 url 但是 我想在用户点击浏览器的 后退 按钮时重新加载内容 以便内容始终与网址匹配 我怎样才能实现这个目标 当用户单击 后退 时是否会触发 jQuery 事件 您需要使用 hashchang
  • Discord.py 给我 event() 缺少 1 个必需的位置参数:'coro'

    我知道这个问题已经得到解答 但我的情况的奇怪之处在于 在我卸载 python 和 pycharm 然后重新安装它们之前 它运行得很好 我想知道的是我在安装过程中做错了什么 导致出现此错误 我知道这以前有效 因为在我将其删除更新之前它就在我的
  • gulp autoprefixer 不添加 moz 前缀

    我在我的项目中使用 gulp 和 autoprefixer 并且我必须使用这样的背景渐变 background linear gradient e98a00 f5aa2f 但输出是 background webkit linear grad
  • 如何确保目标在 makefile 中的所有其他构建规则之前运行?

    我有一个 C 项目 其中包含所有其他 C 文件所依赖的生成文件 我试图在任何其他编译开始之前强制生成并编译该文件 通常它就像将该文件首先放入all 目标 但复杂的是我的 Makefile 也是由构建系统生成的 我只能将片段附加到 Makef
  • 将固定文档/XPS 打印为 PDF,而不显示文件保存对话框

    我有一个FixedDocument我允许用户在 WPF GUI 中预览 然后打印到纸张上 而不显示任何 Windows 打印对话框 如下所示 private void Print PrintQueueCollection printQueu
  • jQuery mCustomScrollbar 不适用于 ajax 内容

    window load function content 1 mCustomScrollbar scrollButtons enable true ajax code function beauty of ceylon content te
  • Homebrew 将二进制文件放在哪里?

    Homebrew 是否安装软件包 usr local bin默认情况下 即它把二进制文件放在那里 我们可以告诉 Homebrew 将二进制文件放在其他地方吗 Apple Silicon Mac ARM 二进制文件位于 opt homebre
  • 如何在Android中获取当前位置[重复]

    这个问题在这里已经有答案了 我在使用 Android 定位系统的网络提供程序获取当前位置坐标时遇到麻烦 已经阅读了大量教程并在我的项目中实现了 4 或 5 个现有类 所有这些类都给了我最后的坐标 但不是当前的坐标 我很确定这个问题是我所缺少
  • 如何使用 .net 2.0 中的 WebBrowser 控件检查 ajax 更新?

    我有一个网页正在使用 WebBrowser 控件在 winform 应用程序中显示 我需要在网页中的 HTML 发生变化时执行一个事件 但是 我找不到通过 Ajax 更新页面时触发的事件 DocumentComplete FileDownl
  • RNG 技术的可移植性和可重复性

    我可以使用两种方法之一来创建一个伪随机数序列 该序列具有两个重要特征 1 它可以在不同的机器上重现 2 该序列永远不会重复范围内的数字 直到所有数字都被发出 我的问题是 这两种方法在可移植性 操作系统 Python 版本等 方面是否存在潜在
  • iframe src 允许所有来源,但仍然收到跨来源错误

    我管理 siteA 的前端 并在页面上有一个 iframe 其中 src 指向 siteB 的资源 这是其他供应商和客户端使用的可嵌入资源 其视频嵌入 因此 siteB 的响应标头设置为 Access Control Allow Origi
  • Rails 4 与 MailCatcher 和 Devise gems

    我有一个带有 gem Devise 的应用程序 我需要通过电子邮件确认注册 在配置 环境 rb我添加了这个 ActionMailer Base delivery method smtp ActionMailer Base smtp sett
  • 模态窗口内的 video.js:全屏不起作用

    我一直在使用 video js 在模态窗口内显示内容 正如您在此处看到的 http www csdalbenga it galleria1 html http www csdalbenga it galleria1 html 点击 Clic
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • Unity 对象不围绕枢轴点旋转

    突然 由于某种原因 统一编辑器中的对象开始围绕其重心旋转 至少我认为是这样 而不是其枢轴点 我尝试将对象放置在一个空对象内 该对象将像往常一样用作新的枢轴点 但这并没有改变任何东西 这是一些设置还是一些更新的功能 我怎样才能阻止它 检查编辑
  • SQLite 的不区分大小写的 UTF-8 字符串排序规则 (C/C++)

    我正在寻找一种方法 以不区分大小写的方式对 C 中的 UTF 8 字符串进行比较和排序 以便在SQLite 中的自定义排序规则函数 http www sqlite org c3ref create collation html 该方法应该i
  • 在 Shell 中提取匹配模式后的字符串

    如何提取 Shell 脚本中匹配模式后面的任何字符串 我知道 Perl 脚本中的此功能 但不知道 Shell 脚本中的功能 以下是示例 subject 01 这是一个示例主题 可能会有所不同 我必须提取 Subject 01 后面的任何字符
  • Android 获取应用程序的“主”数据目录

    一个简单的问题 与应用程序写入内存时的默认 主 目录有关 默认情况下 操作系统 2 2 将创建的任何文件放置在 data data your package files 读取文件时 使用相同的默认值 通过保持适当的上下文openFileIn
  • 假设我不使用任何重载函数,有没有办法可以阻止所有名称修改? [复制]

    这个问题在这里已经有答案了 标题基本概括了所有内容 我知道我可以使用 extern C 块来停止损坏 尽管我不完全确定应该将所述块放在哪里 但是有没有办法可以在整个程序中禁用它 如果我这样做 这会让从代码编译的库更容易与 luajit 的