Questions tagged «c»

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




14
为什么FolderBrowserDialog对话框无法滚动到所选文件夹?
如该屏幕快照所示,所选文件夹不在视图中。需要向下滚动以查看选定的文件夹。 同一对话框显示所选文件夹在其他计算机上可见 我在两台都装有Windows 7的计算机上运行了它。它在一台计算机上可以正常运行,但在第二台计算机上却无法运行。它看起来与Windows环境,而不是一些代码问题?有人可以建议任何解决方法吗? 代码没有变化。我使用了来自不同驱动器的更长路径,但结果是相同的。 private void TestDialog_Click ( object sender, EventArgs e ) { //Last path store the selected path, to show the same directory as selected on next application launch. //Properties.Settings.Default.LastPath FolderBrowserDialog dlgFolder = new FolderBrowserDialog (); dlgFolder.RootFolder = Environment.SpecialFolder.DesktopDirectory; dlgFolder.SelectedPath = Properties.Settings.Default.LastPath; if (dlgFolder.ShowDialog () == System.Windows.Forms.DialogResult.OK) …


4
使C浮点字面量浮动(而不是双精度)
众所周知,在C中,浮点文字(例如1.23)具有type double。结果,任何涉及它们的计算都将提高一倍。 我正在一个嵌入式实时系统上工作,该系统的浮点单元仅支持单精度(float)数字。我所有的变量都是float,并且这种精度已经足够。我根本不需要(也负担不起)double。但是每次 if (x < 2.5) ... 写作中,灾难发生了:减速可能高达两个数量级。当然,直接的答案是写 if (x < 2.5f) ... 但这很容易错过(并且很难检测到为时已晚),尤其是当#define由缺乏纪律(或只是新手)的开发人员在单独的文件中输入“配置”值时。 因此,是否有一种方法可以强制编译器将所有(浮点数)文字视为float,就像带有后缀一样f?即使违反规范,我也不在乎。或其他解决方案?顺便说一下,编译器是gcc。

16
可视化代码流的工具(C / C ++)[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 您是否有任何工具可以简化了解C / C ++代码的任务?我们只是继承了由他人编写的大量软件,因此我们需要快速入门。关于可以简化此任务的工具的任何建议?
76 c++  c  code-analysis 

8
memset()或值初始化以将结构归零?
在Win32 API编程中,通常将Cstruct与多个字段一起使用。通常,其中只有几个具有有意义的值,而所有其他值都必须归零。这可以通过以下两种方式之一来实现: STRUCT theStruct; memset( &theStruct, 0, sizeof( STRUCT ) ); 要么 STRUCT theStruct = {}; 第二个变体看起来更干净-它是单线的,它没有任何可能被错误键入并导致植入错误的参数。 与第一个变体相比,它有什么缺点吗?使用哪个变体,为什么?


5
联合与类型搭配
我已经搜索了一段时间,但找不到明确的答案。 许多人说,使用union来进行pun-pun是不确定的,也是不好的做法。为什么是这样?考虑到您将原始信息写入的内存,它不会做任何未定义的事情,而不会改变它的任何原因(除非它超出了堆栈范围,但这不是联合问题) ,那将是不好的设计)。 人们引用了严格的别名规则,但是在我看来,这就像在说您不能执行,因为您无法执行。 如果不键入pun,联合的意义是什么?我在某处看到应该在不同的时间将相同的内存位置用于不同的信息,但是为什么不删除信息然后再使用呢? 总结一下: 为什么使用联合进行类型修剪是不好的? 如果不是这样,他们的目的是什么? 额外信息:我主要使用C ++,但想了解有关C和C的信息。特别是,我使用联合在浮点数和通过CAN总线发送的原始十六进制之间进行转换。
76 c++  c  unions  type-punning 

7
c ++中c_str函数的用途是什么
我刚刚开始阅读C ++,发现c ++具有丰富的字符串操作功能,而C语言则没有。我正在阅读这些函数并且遇到了c_str(),据我所知是c_str将可能以null终止或可能不是null终止的字符串转换为字符串。 谁能建议我一些示例,以便我可以理解c_str函数的使用?
76 c++  c  string 


4
为什么在C和C ++中有图?
我今天了解到,C99和C ++中有图。以下是有效的程序: %:include <stdio.h> %:ifndef BUFSIZE %:define BUFSIZE 512 %:endif void copy(char d<::>, const char s<::>, int len) <% while (len-- >= 0) <% d<:len:> = s<:len:>; %> %> 我的问题是:为什么它们存在?
76 c++  c  c99  digraphs 

3
如果a未初始化,a ^ a或aa是未定义的行为吗?
考虑以下程序: #include <stdio.h> int main(void) { unsigned int a; printf("%u %u\n", a^a, a-a); return 0; } 它是不确定的行为吗? 表面上a是一个未初始化的变量。因此,这指向未定义的行为。但是a^a和a-a等于0的所有值a,至少我认为是这种情况。是否有某种方法可以证明行为已被明确定义?

5
您是否使用TR 24731的“安全”功能?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 1年前关闭。 改善这个问题 ISO C委员会(ISO / IEC JTC1 / SC21 / WG14)已发布TR 24731-1并正在研究TR 24731-2: TR 24731-1:对C库的扩展第一部分:边界检查接口 WG14正在研究更安全的C库函数的TR。该TR旨在修改现有程序,通常是通过添加带有缓冲区长度的额外参数来实现的。最新草案在文档N1225中。基本原理在文档N1173中。这将成为技术报告类型2。 TR 24731-2:C库的扩展-第二部分:动态分配功能 WG14正在研究更安全的C库函数的TR。该TR面向使用动态分配而不是缓冲区长度的额外参数的新程序。最新草案位于N1337文件中。这将成为技术报告类型2。 问题 您是否使用支持TR24731-1功能的库或编译器? 如果是这样,哪个编译器或库以及在哪个平台上? 修复代码以使用这些功能后,您是否发现任何错误? 哪些功能提供最大的价值? 有没有价值或负值的东西吗? 您打算将来使用该库吗? 您是否正在跟踪TR24731-2的工作?

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.