Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。

3
警告:禁用地址空间随机化时出错:不允许操作
我做错了(或没有做过)gdb对我来说不正确的是什么? root@6be3d60ab7c6:/# cat minimal.c int main() { int i = 1337; return 0; } root@6be3d60ab7c6:/# gcc -g minimal.c -o minimal root@6be3d60ab7c6:/# gdb minimal GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 . . . Reading symbols from minimal...done. (gdb) break main Breakpoint 1 at 0x4004f1: file minimal.c, line 3. (gdb) run Starting program: …
78 c  docker  gdb 

17
C99中最有用的新功能是什么?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 C99已经存在了10多年,但是对其的支持却来得很缓慢,因此大多数开发人员都对C89持保留态度。即使在今天,当我在C代码中遇到C99功能时,有时我还是会感到有些惊讶。 既然大多数主要的编译器都支持C99(MSVC是一个显着的例外,并且某些嵌入式编译器也很落后),我觉得使用C的开发人员可能应该知道他们可以使用哪些C99功能。一些功能只是以前从未标准化的通用功能(snprintf例如,),或者是C ++所熟悉的(灵活的变量声明放置,或单行//注释),但是其中一些新功能最初是在C99中引入的,并且许多程序员都不熟悉。 您发现C99中最有用的新功能是什么? 作为参考,C99标准(标记为草案,但据我所知与更新的标准相同),新功能列表以及GCC C99实施状态。 请为每个答案提供一项功能;随时留下多个答案。鼓励使用简短的代码示例演示新功能。
78 c  c99 

4
在Objective-C中声明和检查/比较(位掩码)枚举
您知道可可里有这个东西,例如您可以创建一个 UIView并执行: view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 我有一个UIView具有多个状态的自定义,enum这样的: enum DownloadViewStatus { FileNotDownloaded, FileDownloading, FileDownloaded }; 对于每个创建的子视图,我设置其tag:subview1.tag = FileNotDownloaded; 然后,我为视图状态创建了一个自定义设置器,它可以执行以下操作: for (UIView *subview in self.subviews) { if (subview.tag == viewStatus) subview.hidden = NO; else subview.hidden = YES; } 但是我想做的是允许这样做: subview1.tag = FileNotDownloaded | FileDownloaded; 所以我subview1以两种状态出现。目前,它在这两个州中均未显示|操作员似乎将两个枚举值相加。 有没有办法做到这一点?

1
最佳C / C ++网络库
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 我有一点没做过C / C ++工作,只是想知道人们最喜欢使用什么跨平台库。 我在寻找一种既好又快又脏的库以及更健壮的库。通常,这是两个不同的库,没关系。
78 c++  c  networking 

19
C语言编程中的vs.while?
有三个环在C: ,for,while和do-while。它们之间有什么区别? 例如,似乎几乎所有while语句都可以被for语句替换,对吗?那么,使用的好处是什么while?
78 c  loops  for-loop  while-loop 

20
解释此片段,该片段不使用if-else或任何其他比较运算符就可以找到两个整数的最大值?
查找两个数字的最大值。您不应使用if-else或任何其他比较运算符。我在在线公告板上发现了这个问题,所以我认为我应该在StackOverflow中询问 示例输入:5、10输出:10 我找到了这个解决方案,有人可以帮我理解这些代码行吗 int getMax(int a, int b) { int c = a - b; int k = (c >> 31) & 0x1; int max = a - k * c; return max; }

7
将文件转换为C / C ++源代码数组的脚本/工具
我需要一个脚本/工具来读取二进制文件并输出一个C / C ++源代码数组(代表文件内容)。有吗 (这个问题已被删除,因为它很有价值,所以我把它放回去。因为我当时在Google上搜索了这个问题,却没有发现任何东西。会发现这样一个简单的脚本,因此很有价值。 这个问题也有很多不赞成解释的不赞成票。在拒绝投票之前,请先评论一下为什么您认为这没有价值或价值不高。 这个问题也引起了我的疑问。如果不清楚,请询问。我真的不知道如何弄清楚。有关示例,请参见答案。 另外(在这里提问之后),我已经有几个答案。我只想(再次)将它们放在此处/链接,因为我认为这可能对其他搜索此对象的人有用。)
78 c  binary 

7
错误:为参数指定了存储类
我写了一个C代码。当我在Linux上编译它时,然后在头文件中显示以下错误: storage class specified for parameter i32 , i8 依此类推 typedef int i32; typedef char i8;
78 c  linux 

6
C中的数学常数PI值
计算PI值是复杂的问题之一,维基百科谈到了 近似值了为此所做处理,并说很难准确计算PI。 C如何计算PI?它是每次计算还是使用不那么精确的固定值?
78 c 


8
将64位整数中的压缩8位整数并行减1,SWAR不带硬件SIMD
如果我有一个64位整数,那么我会将其解释为具有8个元素的打包8位整数数组。我需要1在处理溢出时从每个压缩整数中减去常数,而一个元素的结果不会影响另一个元素的结果。 我现在有这段代码,它可以工作,但是我需要一个解决方案,它可以并行地对每个压缩的8位整数进行减法,并且不进行内存访问。在x86上,我可以使用类似的SIMD指令psubb,以并行方式减去打包的8位整数,但是我正在编码的平台不支持SIMD指令。(在这种情况下为RISC-V)。 因此,我正在尝试执行SWAR(寄存器中的SIMD)以手动取消a的字节之间的进位传播uint64_t,从而执行以下操作: uint64_t sub(uint64_t arg) { uint8_t* packed = (uint8_t*) &arg; for (size_t i = 0; i < sizeof(uint64_t); ++i) { packed[i] -= 1; } return arg; } 我认为您可以使用按位运算符来执行此操作,但我不确定。我正在寻找不使用SIMD指令的解决方案。我正在寻找一种可移植的C或C ++解决方案,或者只是其背后的理论,以便我可以实现自己的解决方案。
77 c++  c  bit-manipulation  simd  swar 

5
成员在结构中的顺序重要吗?
我在C中发现了一种特殊的行为。请考虑以下代码: struct s { int a; }; struct z { int a; struct s b[]; }; int main(void) { return 0; } 它编译就好了。然后z像这样更改struct成员的顺序 struct z { struct s b[]; int a; }; 突然之间我们得到了编译错误field has incomplete type 'struct s []'。 这是为什么?
77 c  struct 


6
使用fflush(stdin)
因此,通过Google进行快速搜索以fflush(stdin)清除输入缓冲区,就会发现许多网站警告不要使用它。但这正是我的CS教授教课的方式。 使用有多糟糕fflush(stdin)?即使我的教授正在使用它,并且它似乎可以正常工作,我还是应该放弃使用它吗?
77 c  stdin  fflush 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.