c相关内容

使用MemSet(…)合法吗, ;0, ;…)在一系列的双打上?

将Double数组(使用memset(…, 0, …))或包含Double的结构的内存清零合法吗? 这个问题意味着两件不同的事情: 从C标准的角度看:这是NOT的未定义行为吗?(我认为,在任何特定的平台上,这都不可能是未定义的行为,因为它只是取决于内存中浮点数的表示形式--仅此而已。) 从实际角度看:在英特尔平台上可以吗?(不管标准是什么。) 推荐答案 C99标准附件 ..
发布时间:2022-04-20 09:59:33 其他开发

如何将无符号长整型转换为字符,在C++中显示在LCD上

我有一个变量应该转换为字符才能在LCD上显示,我的问题是当我用sprintf将这个整数转换为字符时,它显示了错误的数字,每个超过4个长度的数字都显示错误,它只正确地显示长度低于4的数字。 我的微控制器是ATmega16aIDE是CodeVisionAVR,语言是C unsigned long int username; char show[20]; unsigned long int ..
发布时间:2022-04-19 16:17:41 其他开发

创建一个目录,并返回一个带有`opens`的目录

我希望在C中创建一个文件树,并避免可能的争用条件。我的目的是使用open(3)创建根目录,open将返回一个目录文件描述符(dirfd),我将把它提供给后续的openat(3)/mkdirat(3)调用以创建树。 int dirfd = open(path, O_DIRECTORY | O_CREAT | O_RDONLY, mode); 执行此操作的通常方法是将第一个open调用替换为 ..
发布时间:2022-04-18 11:01:18 服务器开发

哪个系统调用号头文件是正确的?

我最近在做一些内核编码,我发现了2个unistd.h文件。 第一个位置为/usr/include/asm/unistd.h。第二个来自内核的源代码:linux/include/uapi/asm-generic/unistd.h。 源代码的版本与我的内核的版本相同,但两个头文件 彼此不同。 /usr/include/asm/unistd.h(从我的电脑): #define __NR ..
发布时间:2022-04-18 10:58:37 服务器开发

__NR_gettid与系统_gettid的区别

我只是在寻找在Linux中获取唯一线程ID的方法。我发现的方法是使用以下两个参数中的一个作为参数作为syscall:__NR_gettid或SYS_gettid。 有人能解释一下它们之间的区别吗? 推荐答案 无 在中有以下内容: #define SYS_gettid __NR_gettid ..
发布时间:2022-04-18 10:53:29 服务器开发

在不修改内核的情况下拦截系统调用的最小开销方式

我知道拦截系统调用的方法如下。 使用ptrace,但这似乎有很高的开销。据我所知,像strace这样的工具也在内部使用ptrace。 使用内核模块更改系统调用表,但据我所知,这种方法在以后的Linux内核中不再可行。 使用LD_PRELOAD。但是,例如,如果您直接进行系统调用,而没有为该系统调用使用某些包装库函数,则这将不起作用。 所以您可以看到上面提到的所有方法都有缺陷。因此, ..
发布时间:2022-04-18 10:50:30 服务器开发

用MSVC实现C语言中的原子加载

TL;DR:我需要与C11的atomic_load相当的Microsoft C(而不是C++)。有人知道什么是正确的功能吗? 我有一些使用原子的非常标准的代码。类似于 do { bar = atomic_load(&foo); baz = some_stuff(bar); } while (!atomic_compare_exchange_weak(&foo, &bar, ba ..
发布时间:2022-04-18 09:48:37 其他开发

如何将Windows上的代码文件与WSL/Linux同步?

基本上,我有一些C/C++代码需要在Linux机器上构建和调试。遗憾的是,我的Windows笔记本电脑没有足够的可用硬盘空间来安装一些Linux Dist,也没有足够的可用RAM来轻松运行VM。 到目前为止,我使用WSL相当轻松地处理了它,但规模相当小。通过CLI和GDB编辑和调试2-3个.c文件很容易,但在大型项目中却变得非常烦人。 我想要一些简单的东西,比如“在Windows ID ..

在MacOS上编译适用于PHP-7.4的Firebird驱动程序的问题

我一直在尝试在MacOS上安装/编译php7.4的php-Firebird驱动程序,但到目前为止还没有成功。 驱动程序回购中存在一个未解决的问题,但在帮助方面没有进行太多操作。 https://github.com/FirebirdSQL/php-firebird/issues/6 到目前为止,我这样做了: 已安装https://github.com/FirebirdSQL/fi ..
发布时间:2022-04-17 13:13:11 其他开发

C通过二进制文件生成头文件

我正在尝试制作一种简单的加密类型的东西。所以我要做的是读取可执行文件的内容,对其进行加密,并生成一个头文件,该文件将包含一个带有加密字节/二进制文件的变量,然后它将解密它,依此类推。所以问题是,我如何才能将加密的内容导出到头文件中。因为例如,如果您尝试打印内容的字节表示形式,您可以使用 printf("%x", byte); 但我认为您不能使用这种格式将字节存储在无符号字符中,因为 通常 ..
发布时间:2022-04-17 11:33:30 其他开发

用GCC生成a.out文件格式

如何在x86架构上和GCC生成a.out文件格式? 使用NASM,我可以使用-f标志轻松完成此操作,例如: nasm -f aout start.asm objdump -a start.o start.o: file format a.out-i386-linux start.o 在Linux上,编译.c文件会生成ELF目标文件。如何使用GCC生成a.out文件? ..
发布时间:2022-04-17 11:18:13 其他开发

删除C的图中的边

我正在尝试从名为“g”的曲线图(http://igraph.org/c/)中删除随机选择的边。 IGRAPH_DELETE_EDGE函数的IGRAPH手册在这里:http://igraph.org/c/doc/igraph-Basic.html#igraph_delete_edges但我还是不能理解。 我有这个: #include #include ..
发布时间:2022-04-16 13:30:33 其他开发

C将标准输入重定向到键盘

我在Mac OSX上编写了一个小的C程序,它执行以下步骤: 从标准输入中读取一些输入并将输入存储到内存中。 运行一些计算并将输出打印到标准音频 在第1步和第2步之间,我希望提示用户并等待某种键盘输入,以发出“继续进行到第2步”的信号。问题是在使用以下命令调用程序时,stdin已被重定向: $ ./simple ..
发布时间:2022-04-16 11:40:01 其他开发

如何将结构打包到数组中并删除零填充?

据我理解,"there will never be padding in between elements of an array"。而且我知道结构必须至少有一个字节长,否则它将用零填充。 我希望有一个结构数组,每个结构的大小为4位,没有补零。是否有某种我可以应用于数组的打包方法? 我希望我的输出为0xFFFF(0b1111_1111_1111_1111),但我无法摆脱结构的填充。 ..
发布时间:2022-04-15 19:07:00 其他开发

从共享库获取枚举定义

我正在使用ctype访问用C编写的共享库。共享库的C源代码包含类似 的枚举 enum { invalid = 0, type1 = 1, type2 = 2 } type_enum; 在Python端,我打算只为各种枚举值定义整数常量,如: INVALID = 0 TYPE1 = 1 TYPE2 = 2 ,然后在调用C函数的Python代码中使用这些 ..
发布时间:2022-04-15 16:13:01 Python