问题标签 [clib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

java - 如何使用 java jnr 推断 clib 结构

jnr 有没有办法为我构造一个结构,以便使用 jnr 访问返回的调用。

例如,如果我想使用

其中 struct statvfs 是:

我怎么能访问这个?

0 投票
1 回答
182 浏览

c - Windows 程序员转向 linux - 编码约定

我已经为 Windows 开发了很长时间,主要是 WinApi(和 .Net)。

我已经开始学习基本的 Linux,我对这些差异有一些疑问:

  1. 在 Windows 中,我几乎没有使用过 C 标准库。

    如果我需要 API,我会搜索 MSDN 并找到合适的库\函数。

    从表面上看,在 Linux 中,C 标准库就是一切。

    我见过的所有代码示例都使用了标准库(而不是使用一些 Linux 内部函数,比如 Linux“CreateFile”)。

    这真的是如何编写“正确的”linux代码吗?使用 C 标准库?

    如果我想读取文件或分配内存是 fopen\malloc 要走的路吗?

  2. 如果我的第一个问题的答案是肯定的(我猜会的)

    与强大的 WinApi 相比,C 标准库是无能为力的。

    假设我希望获得正在运行的进程列表 (CreateToolhelp32Snapshot) 或创建线程或进程 (CreateThread\CreateProcess),我应该如何在 Linux 中做到这一点?

  3. 文档。

    在 Windows 中,我所需要的都可以在 MSDN 中找到。

    如果我有一个“我该怎么做”的问题(如上面的问题),我应该去哪里?

    我的主要文档来源在哪里。

非常感谢,迈克尔。

0 投票
1 回答
1316 浏览

assembly - 在 x86_64 程序集中实现 StrCat

0 投票
1 回答
4299 浏览

visual-c++ - 关于 MSVC 编译器的 open()、_open() 和 fopen() 之间的区别?

我看到这三个功能都与打开文件有关。

打开

此 POSIX 函数已弃用。请改用符合 ISO C++ 标准的 _open。

_打开

打开一个文件。这些功能已被弃用,因为有更安全的版本可用;见_sopen_s,_wsopen_s。

开放

打开一个文件。这些执行附加参数验证和返回错误代码的函数的更安全版本可用;参见 fopen_s、_wfopen_s。

那么,为什么会有三个呢?什么时候用哪个?我认为 POSIX 很好,但为什么 MSDN 说不open推荐使用 POSIX 版本?是否有任何与前导下划线相关的命名约定,以便我可以根据它的第一个外观选择正确的函数?

当我查看ACPICA 代码时,我看到以下代码: 似乎该_XXX版本可以禁用某些MS 语言扩展,这些扩展到底是什么?

加 1

似乎单个下划线前缀_XXX是微软的惯例。比如_DEBUG_CrtSetDbgFlag和前面提到的_open。引用MSDN的一些话:

在 Microsoft C++ 中,带有两个前导下划线的标识符保留用于编译器实现。因此,Microsoft 约定是在 Microsoft 特定关键字之前使用双下划线。这些词不能用作标识符名称。

默认情况下启用 Microsoft 扩展。为确保您的程序完全可移植,您可以在编译期间通过指定 ANSI 兼容的 /Za 命令行选项(为 ANSI 兼容性而编译)来禁用 Microsoft 扩展。执行此操作时,Microsoft 特定的关键字将被禁用。

启用 Microsoft 扩展后,您可以在程序中使用 Microsoft 特定的关键字。为了符合 ANSI,这些关键字以双下划线开头。为了向后兼容,支持除 __except、__finally、__leave 和 __try 之外的所有双下划线关键字的单下划线版本。此外,__cdecl 可以不带前导下划线。

__asm 关键字替换了 C++ asm 语法。asm 保留用于与其他 C++ 实现兼容,但未实现。使用 __asm。

__based 关键字对 32 位和 64 位目标编译的用途有限。

虽然根据上面的引用,__int64应该_int64都可以工作,但是 Visual Studio 没有为_int64. 但_int64也可以编译。

添加 2

snprintf() 和 _snprintf()

0 投票
1 回答
127 浏览

c - 如何在 libmad 中运行 minimad.c(什么是命令和参数)?

请解释一下如何在 libmad(http://www.underbit.com/products/mad/)中运行 minimad.c?我按照安装文件中的说明进行操作。但是我C语言不好,不知道main函数中需要传递哪些参数。我不明白 argv 中使用了哪些参数(在 main() 中)。

0 投票
2 回答
9346 浏览

c - 如何将 RFC 3339 日期时间转换为 IST?

我正在使用 Google Drive Rest API 来列出我的 Google Drive 文件。我正在获取驱动器中文件的元数据下方。在那里,我得到了 RFC 3339 格式的“创建时间”。您能帮我将 Google Drive Rest API 返回的时间转换为 IST 吗?在 Linux 平台上有没有办法做到这一点?

注意:我使用 curl 工具从我的 Linux 服务器访问 Google drive rest API。

0 投票
1 回答
119 浏览

jq - 在 JQ 中使用具有多个参数的 C 数学函数

如何在 JQ 中使用带有多个参数的 C 数学函数?手册中没有示例。它说的是:

采用单个输入参数(例如sin())的 C 数学函数可用作零参数jq函数。采用两个输入参数(例如pow())的 C 数学函数可用作忽略两个参数的 jq 函数.采用三个输入参数的 C 数学函数可用作忽略的三参数 jq 函数.

我已经弄清楚如何将单个输入参数函数实现为零参数 jq 函数:

我如何使用类似的东西pow

手册中的“忽略的 jq 函数.”是什么意思?他们是否忽略了管道输入的内容,从某种意义上说,他们不将其作为参数,与仅从管道中获取参数的一个输入参数情况相反?

0 投票
0 回答
114 浏览

c - 如何在 macOS Big Sur 中添加 C-Libraries?

我想添加一个 C-Library,只需键入以下内容即可将其包含在代码中:

当我像这样使用完整路径时,它可以工作:

有没有办法将lib添加到某种标准位置,gcc会在哪里找到它?

我尝试了以下方法,但对我不起作用: 如何在 Macos for bash 中为 gcc 添加默认包含和库路径?

(两者echo $LD_LIBRARY_PATH 都是echo $DYLD_LIBRARY_PATH空的,将所有 *.h 文件复制到 /usr/local/ 也不起作用。)

非常感谢您的帮助!

0 投票
0 回答
17 浏览

memory-management - C/C++:减少浪费的最佳可增长缓冲区分配大小

假设 MS 编译器和 C 函数realloc,增加分配(可增长缓冲区)以减少浪费的最佳大小是多少。显然,如果在增长缓冲区之间没有其他分配,realloc则可以处理任何大小,但是对于更大的增长块大小,在增长之间会有许多其他分配,什么大小最好?

我想到了 4096,但我看到的大多数 C 堆管理的方式是使用标题,因此使用 4096 最终需要比页面大小更多的空间(标题的大小),这可能会导致大量浪费下一页。所以总的来说,是否有一种通用的方法可以获取标头的大小并使缓冲区从 4096 向下对齐 16 字节?或者大多数当前 C 库的堆管理器是否处理 4096 特殊问题?

谢谢。