19得票4回答
当出现分段错误时,不会生成核心转储文件。

我正在尝试使用gdb调试我的C程序引起的分段错误。当我运行程序时,不会自动生成核心转储文件,我必须运行以下命令:ulimit -c unlimited 为了在下一次运行时生成核心转储文件,为什么不自动生成核心转储文件,并且为什么每次都要运行ulimit命令来生成?我使用的操作系统是Ubuntu...

8得票3回答
为给定的掩码生成所有位模式

我的问题如下:我有一个值 x 和一个模式 p,两个变量的大小相同。目标是迭代通过 p 掩码没有覆盖的 x 的所有位模式。 例如:如果我们有 p = 1001,我们想要找到 0000,0001,1000 和 1001 - 不一定按照这个顺序。 在 C99 中,标准实现如下(返回值指定是否已经...

10得票4回答
使用原子变量的共享内存IPC技术,对于x86架构来说是否是一个好选择?

我有以下代码用于通过共享内存进行进程间通信。一个进程将日志写入,另一个进程从中读取。其中一种方法是使用信号量,但在这里我使用类型为 atomic_t 的原子标志 (log_flag),它驻留在共享内存中。日志 (log_data) 也是共享的。 现在的问题是,这是否适用于 x86 架构,或者...

12得票3回答
如何从另一个XMM寄存器条目中获取4个相同的浮点数并将其填充到x86 XMM寄存器中?

我正在尝试在C/C++代码中实现一些内联汇编,以利用SSE。我想复制和复制值(从XMM寄存器或存储器)到另一个XMM寄存器。例如,假设我有一些值{1, 2, 3, 4}在存储器中。我想将这些值复制,使得xmm1被填充为{1, 1, 1, 1},xmm2为{2, 2, 2, 2},等等。 查阅...

104得票3回答
为什么sizeof int是错误的,而sizeof(int)是正确的?

我们知道sizeof是一个用于计算任何数据类型和表达式大小的运算符,当操作数是一个表达式时,括号可以省略。int main() { int a; sizeof int; sizeof( int ); sizeof a; ...

8得票4回答
字符指针数组

我正在查看一些我没有编写的代码,并想要帮助理解其中的一个元素。代码存储字符数组,创建指向这些数组的指针(将指向数组地址的指针分配)。看起来它然后创建一个数组来存储这些字符指针地址,我只是想要一些关于我所看到的东西的澄清。我还对在创建数组时使用双重(**)感到困惑。 下面是一个精简和简化的例子...

15得票2回答
Flex文件中的"premature eof error"错误

我有以下代码,当我运行 flex hello.l 命令时会出现错误 "hello.l",line 31: premature EOF。%{ #include <stdlib.h> #include "y.tab.h" %} %% ("hi"|"oi")"\n" ...

11得票1回答
从lex和yacc语法生成编译器

我正在尝试生成一个编译器,以便可以将.c文件传递给它。 我从http://www.quut.com/c/ANSI-C-grammar-y.html下载了YACC和LEX语法,并将它们命名为clexyacc.l和clexyacc.y。 在终端上生成时我执行了以下命令: yacc -d cl...

7得票2回答
用于检测OS X版本(无论是Lion还是其他版本)的C宏?

有没有预定义的C宏来检测OS X的版本?我知道__APPLE__和__MACH__存在,但这些是二进制的。是否有一个特定的值__APPLE_CC__表示Lion? 特别地,Lion在<stdio.h>中添加了getline()的定义,能否检测代码是否正在Lion上编译,以解决编译...

17得票8回答
在操作内存时,是否需要乘以 sizeof(char)?

当使用 malloc 和进行类似的内存操作时,我能否依赖于 sizeof(char) 总是为1? 例如,我需要为 N 个 char 类型的元素分配内存。是否需要乘以 sizeof(char):char* buffer = malloc( N * sizeof( char ) ); 我是否可以...