Questions tagged «c»

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



2
在Linux中测量时间-时间vs时钟vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
其中计时功能,time,clock getrusage,clock_gettime,gettimeofday和timespec_get,我想清楚地了解它们是如何实现的,为了知道在什么情况下我必须使用他们什么是他们的返回值。 首先,我们需要对返回壁钟值的函数与返回进程或线程值的函数进行分类。gettimeofday返回壁钟值,clock_gettime返回壁钟值或进程或线程值,具体取决于Clock传递给它的参数。getrusage并clock返回过程值。 然后,第二个问题涉及这些功能的实现以及结果的准确性。这些功能使用哪种硬件或软件机制。 似乎getrusage只使用了内核滴答(通常为1ms长),结果比ms更加准确。这样对吗?然后,该getimeofday功能似乎使用了最准确的基础硬件。结果,它的精度通常是最新硬件上的微秒(由于API而不能更高)。关于什么的clock,关于“逼近”该名男子页讲,这是什么意思?怎么回事clock_gettime,API只需十亿分之一秒,这是否意味着如果基础硬件允许的话,它就能如此精确?单调性如何? 还有其他功能吗?
148 c  linux  time  linux-kernel 

10
Duff的设备如何工作?
我已经在Duff的设备上阅读了Wikipedia上的文章,但我听不懂。我真的很感兴趣,但是我已经阅读了几次说明,但我仍然不知道Duff的设备如何工作。 什么是更详细的解释?
147 c  duffs-device 

10
void *是什么意思,以及如何使用它?
今天,当我阅读别人的代码时,我看到类似的含义,分别对函数名称和变量类型意味着void *func(void* i);什么void*? 另外,什么时候需要使用这种指针以及如何使用它?
147 c 

13
日常机器如何编程?
日常机器(不像家用电器,数字手表等那样的计算机和移动设备)如何编程?可口可乐自动售货机的编程中使用哪种代码?我的咖啡机如何接受预先设定的时间,然后在几小时后开始冲泡一壶咖啡? 这些机器内部是否装有操作系统,还是更基本的东西?它们是用Assembly,C还是其他某种语言编写的? 而且,我真的很想找到一些列出这些操作系统或基础代码系统的资源,甚至在可能的情况下甚至还带有源代码。如果有人知道这样的资源(搜索对我没有任何帮助),那就太好了。

2
用scanf读取字符串
我对某些事情感到困惑。我的印象是,使用读取C字符串的正确方法scanf()遵循 (不要介意可能的缓冲区溢出,这只是一个简单的示例) char string[256]; scanf( "%s" , string ); 但是,以下似乎也可以工作, scanf( "%s" , &string ); 这仅仅是我的编译器(gcc),纯粹的运气还是其他?
147 c  scanf 

9
为什么C ++ rand()似乎只生成相同数量级的数字?
在一个用C / C ++编写的小型应用程序中,我遇到了rand函数以及种子的问题: 我想产生一个具有不同阶数的随机数序列,即具有不同的对数值(以2为底)。但是似乎所有产生的数字都是相同的阶次,仅在2 ^ 25和2 ^ 30之间波动。 是因为rand()现在使用Unix时间是一个相对较大的数目吗?我忘记了什么?我rand()刚开始播种一次main()。
146 c++  c  math  random 

5
在C中将一个结构分配给另一个
您可以将结构的一个实例分配给另一个实例吗? struct Test t1; struct Test t2; t2 = t1; 我已经看到它适用于简单结构,但它适用于复杂结构吗? 编译器如何知道如何根据数据类型复制数据项,即区分an int和string?
146 c  struct 

3
在C / C ++预处理器中,在其自己的行上加一个井号/井号(#)的目的是什么?
我一直在看Boost库的源代码,并且我注意到通常有单个磅号,但没有附加任何预处理程序指令。我通读了GCC预处理程序手册和规范指南,但找不到任何相关内容。 (1) #ifndef BOOST_CONFIG_HPP (2) # include <boost/config.hpp> (3) #endif (4) # (5) #if defined(BOOST_HAS_PRAGMA_ONCE) (6) # pragma once (7) #endif 在第4行,英镑符号后面没有任何内容。这有什么作用?它在C预处理程序(CPP)规范中定义吗? 由于Boost是跨平台的库,因此我认为任何CPP都应正确解析它。在整个代码中具有随机的磅/哈希符号会产生什么影响/副作用?
145 c++  c  boost  c-preprocessor 


4
为什么pthread_cond_wait有虚假的唤醒?
引用手册页: 使用条件变量时,总是存在一个布尔谓词,其中涉及与每个条件等待相关联的共享变量,如果线程应该继续执行,则为true。从pthread_cond_timedwait()或pthread_cond_wait()函数可能会引起虚假的唤醒。由于pthread_cond_timedwait()或pthread_cond_wait()的返回并不暗示此谓词的值,因此应在返回时重新评估该谓词。 因此,pthread_cond_wait即使您未发出信号也可以返回。至少乍一看,这似乎很残酷。就像一个函数,它随机返回错误的值,或者在它真正到达正确的return语句之前随机返回。似乎是一个重大错误。但是他们选择在手册页中记录而不是修复它的事实似乎表明,有一个正当的理由导致pthread_cond_wait虚假地醒来。据推测,它的工作方式具有内在的本质,使它无济于事。问题是什么。 为什么会pthread_cond_wait虚假归还?为什么不能保证只有在正确发出信号后才能唤醒它?谁能解释其伪造行为的原因?
145 c  pthreads 

6
在const之前还是const之后?
首先,您可能知道const可以用来使对象的数据或指针不可修改,或两者都不可修改。 const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer 但是,您也可以使用以下语法: Object const *obj; // same as const Object* obj; 唯一重要的事情就是您将const关键字放在星号的哪一边。就我个人而言,我更喜欢const在该类型的左侧指定该数据不可修改,因为我发现从左到右的思维方式它读起来更好,但是哪种语法先出现? 更重要的是,为什么有两种正确的方式来指定const数据?在哪种情况下,相对于另一种情况,您更喜欢还是需要? 编辑: 因此,在我出生很久之前就制定了编译器如何解释事物的标准时,这听起来像是一个任意决定。由于const应用于关键字的左侧(默认情况下是?),我猜他们认为添加“快捷方式”以其他方式应用关键字和类型限定符至少在声明更改之前一直没有危害。解析*或&... 我也假设在C中也是这种情况?
145 c++  c  syntax  const 

4
ios_base :: sync_with_stdio(false);的意义 cin.tie(NULL);
包括在内的意义是什么 ios_base::sync_with_stdio(false); cin.tie(NULL); 在C ++程序中? 在我的测试中,它可以加快执行时间,但是是否有一个我应该担心的测试用例呢? 这两个语句是否总是必须在一起,或者第一个语句是否足够,即忽略cin.tie(NULL)? 另外,如果将其值设置为,是否可以同时使用C和C ++命令false? https://www.codechef.com/viewsolution/7316085 上面的代码运行良好,直到我scanf/printf在C ++程序中使用值为true。在这种情况下,它给出了分割错误。这可能是什么解释?
145 c++  c 

9
如何在Visual Studio调试器中显示动态分配的数组?
如果您有一个静态分配的数组,Visual Studio调试器可以轻松显示所有数组元素。但是,如果您有一个动态分配并由指针指向的数组,则单击+将其展开时,它将仅显示该数组的第一个元素。有没有一种简单的方法可以告诉调试器,以Foo类型和X大小的数组的形式显示此数据?

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.