Questions tagged «c»

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


4
不可能返回数组在C中实际上意味着什么?
我不是要重复关于C无法返回数组但要更深入地研究的常见问题。 我们不能这样做: char f(void)[8] { char ret; // ...fill... return ret; } int main(int argc, char ** argv) { char obj_a[10]; obj_a = f(); } 但是我们可以做: struct s { char arr[10]; }; struct s f(void) { struct s ret; // ...fill... return ret; } int main(int argc, char ** argv) …
72 c 


7
如何使用OpenSSL include编译.c文件?
我正在尝试编译一个包含以下内容的小.c文件: #include <openssl/ssl.h> #include <openssl/rsa.h> #include <openssl/x509.h> #include <openssl/evp.h> 在我拥有.c文件的同一文件夹中,我拥有带有所有这些文件(以及更多文件)的/ openssl,也在突触包管理器中,我看到安装了OpenSSL,我正在尝试使用以下方法进行编译: gcc -o Opentest Opentest.c -lcrypto 但我总是得到错误: error: openssl/ssl.h: No such file or directory error: openssl/rsa.h: No such file or directory error: openssl/x509.h: No such file or directory error: openssl/evp.h: No such file or directory 我要编译的文件只是一个.c文件,没有Makefile或./configure。 我已经尝试过: env CFLAGS=-I/path/to/openssl/ 并尝试再次编译,但我得到相同的错误。 …

9
是否可以遍历可变参数宏中的参数?
我想知道是否有可能遍历传递给C99中可变参数宏的参数或使用任何GCC扩展? 例如,是否可以编写一个通用宏,该宏将结构及其字段作为参数传递并打印结构中每个字段的偏移量? 像这样: 构造一个{ 诠释 int b; int c; }; / * PRN_STRUCT_OFFSETS将打印每个字段的偏移量 内部结构作为第一个参数传递。 * / int main(int argc,char * argv []) { PRN_STRUCT_OFFSETS(结构a,a,b,c); 返回0; }


5
Google Test是否可以测试C代码?
因此,我开始喜欢并喜欢对参与的C ++项目使用Google Test。我只是提出了一个新的项目,该项目将是纯C语言(一个库),到目前为止还看不到任何原因即使是C ++框架,也不要继续使用Google Test。拥有C ++编译器将不是问题。 是否有特定原因导致我不应该使用Google Test测试直接的C代码? 谢谢。
72 c  googletest 


2
什么是扩展名为.a的文件?
我下载了这个:https : //github.com/mongodb/mongo-c-driver 现在,我试图在我的C程序中使用它,但是我不知道如何处理生成的.a文件。这些是什么?我找不到任何信息,甚至在GCC手册中也找不到。 我这样构建它: scons --c99 另外,我可以在C89程序中使用C99库吗?



2
隐式类型提升规则
这篇文章旨在用作有关C语言中隐式整数提升的FAQ,尤其是由通常的算术转换和/或整数提升引起的隐式提升。 示例1) 为什么给出一个奇怪的大整数而不是255? unsigned char x = 0; unsigned char y = 1; printf("%u\n", x - y); 示例2) 为什么给出“ -1大于0”? unsigned int a = 1; signed int b = -2; if(a + b > 0) puts("-1 is larger than 0"); 示例3) 为什么在上面的示例中更改类型以short解决问题? unsigned short a = 1; signed short b …

13
套接字接受-“打开的文件太多”
我正在一个学校项目中工作,我必须编写一个多线程服务器,现在我通过对它进行一些测试来将它与apache进行比较。我正在使用Autobench来解决此问题,但是在运行了几次测试之后,或者如果我给它很高的速率(大约600+)以建立连接,我会收到“打开的文件太多”的错误消息。 处理close()完请求后,我总是在套接字上做一个。我也尝试过使用该shutdown()函数,但似乎无济于事。可以解决吗?
72 c  sockets 

3
如何使用CMAKE从命令行在Windows上构建x86和/或x64?
一种使用cmake在Windows上使用Visual Studio构建x86的方法如下: 启动x86的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 一种使用cmake在Windows上使用Visual Studio构建x64的方法如下: 启动x64的Visual Studio命令提示符 运行cmake: cmake -G "NMake Makefiles" \path_to_source\ 纳马克 使用Cmake,如何编译一个或两个体系结构?(例如Visual Studio如何在IDE中执行此操作)

3
C和C ++:自动结构的部分初始化
例如,如果somestruct有三个整数成员,我一直认为可以在C(或C ++)函数中执行此操作: somestruct s = {123,}; 第一个成员将初始化为123,后两个成员将初始化为0。我经常对自动数组执行相同的操作,编写 int arr[100] = {0,};该函数,以便将数组中的所有整数都初始化为零。 最近,我读了《GNU C参考手册》中: 如果不初始化结构变量,则效果取决于它是否具有静态存储(请参见存储类说明符)。如果是,则将整数类型的成员初始化为0,将指针成员初始化为NULL;否则,将其初始化为NULL。否则,结构成员的值是不确定的。 有人可以告诉我有关部分自动结构和自动数组初始化的C和C ++标准怎么说?我在Visual Studio中完成上面的代码没有问题,但是我想与gcc / g ++以及其他编译器兼容。谢谢
71 c++  c 

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.