Questions tagged «c»

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

8
什么是__stdcall?
我正在学习Win32编程,其WinMain原型如下所示: int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show ) 我对这个WINAPI标识符的用途感到困惑,发现: #define WINAPI __stdcall 这是做什么的?我对在返回类型之后根本没有东西感到困惑。是__stdcall为了什么 返回类型和函数名称之间有什么含义?

12
一个免费的工具,可以根据一组编码标准检查C / C ++源代码吗?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 在Java中找到这样一种工具(Checkstyle,JCSC)看起来很容易,但是我似乎找不到C / C ++的工具。我不是在寻找像皮棉一样的静态代码分析器,我只想检查诸如变量命名,大写,间距,标识,括号位置等编码标准。
151 c++  c  coding-style 

4
在CMake中,如何测试编译器是否为Clang?
我们有一组跨平台的CMake构建脚本,并且支持使用Visual C ++和GCC进行构建。 我们正在尝试Clang,但我不知道如何使用CMake脚本测试编译器是否为Clang。 我应该测试什么以查看编译器是否为Clang?我们目前正在使用,MSVC并CMAKE_COMPILER_IS_GNU<LANG>分别测试Visual C ++和GCC。
151 c++  c  cmake  clang 


4
从C调用Go函数
我正在尝试创建一个用Go语言编写的静态对象,以与C程序(例如,内核模块)交互。 我已经找到了有关从Go调用C函数的文档,但是关于如何走另一条路却找不到很多。我发现这是可能的,但是很复杂。 这是我发现的: 有关C和Go之间的回调的博客文章 CGO文档 Golang邮件列表帖子 有任何人对此有经验吗?简而言之,我正在尝试创建一个完全用Go编写的PAM模块。

4
为什么这个吃记忆的人真的不吃记忆?
我想创建一个程序来模拟Unix服务器上的内存不足(OOM)情况。我创建了这个超级简单的内存消耗者: #include <stdio.h> #include <stdlib.h> unsigned long long memory_to_eat = 1024 * 50000; size_t eaten_memory = 0; void *memory = NULL; int eat_kilobyte() { memory = realloc(memory, (eaten_memory * 1024) + 1024); if (memory == NULL) { // realloc failed here - we probably can't allocate more memory for whatever …


5
如何使clang编译为llvm IR
我希望clang将我的C/C++代码编译为LLVM字节码,而不是二进制可执行文件。我该如何实现?如果我得到了LLVM字节码,该如何将其进一步编译为二进制可执行文件。 基本上,我想LLVM在编译为二进制可执行文件之前将自己的代码添加到字节码中。
150 c  llvm  clang 

12
为什么x [0]!= x [0] [0]!= x [0] [0] [0]?
我正在学习一些C ++,并且正在与指针作斗争。我知道我可以通过声明以下三个级别的指针: int *(*x)[5]; 因此,这*x是指向5个元素的数组的指针,这些数组是的指针int。我也知道x[0] = *(x+0);,x[1] = *(x+1)等等。 那么,鉴于上述声明,为什么x[0] != x[0][0] != x[0][0][0]?
149 c++  c  arrays  pointers 

17
const指针的意义是什么?
我不是在谈论const值的指针,而是const指针本身。 我在学习C和C ++的基础知识之外,直到今天,我才意识到指针是通过值传递给函数的,这很有意义。这意味着在函数内部,我可以使复制的指针指向其他某个值,而不会影响调用者的原始指针。 那么,有一个函数标头说: void foo(int* const ptr); 在这样的函数中,您不能使ptr指向其他东西,因为它是const并且您不希望对其进行修改,而是这样的函数: void foo(int* ptr); 工作也一样!因为无论如何都会复制指针,并且即使您修改了副本,调用者中的指针也不会受到影响。那么const的优点是什么?
149 c++  c  pointers  const 

10
GCC的## __ VA_ARGS__技巧的标准替代方法?
C99中可变参数宏的空参数存在一个众所周知的 问题。 例: #define FOO(...) printf(__VA_ARGS__) #define BAR(fmt, ...) printf(fmt, __VA_ARGS__) FOO("this works fine"); BAR("this breaks!"); BAR()根据C99标准,上述的使用确实是不正确的,因为它将扩展为: printf("this breaks!",); 请注意结尾的逗号-不可行。 一些编译器(例如:Visual Studio 2010)将悄悄地为您消除尾随的逗号。其他编译器(例如:GCC)也支持放在##前面__VA_ARGS__,如下所示: #define BAR(fmt, ...) printf(fmt, ##__VA_ARGS__) 但是,是否存在符合标准的方法来实现此行为?也许使用多个宏? 现在,该##版本似乎受到了很好的支持(至少在我的平台上),但是我确实希望使用符合标准的解决方案。 先发制人:我知道我可以编写一个小函数。我正在尝试使用宏进行此操作。 编辑:这是为什么我想使用BAR()的示例(尽管很简单): #define BAR(fmt, ...) printf(fmt "\n", ##__VA_ARGS__) BAR("here is a log message"); BAR("here is a log message with a …

3
写入.txt文件?
如何将一小段文字写入.txt文件?我已经使用Google搜索了3-4多个小时,但找不到执行该操作的方法。 fwrite(); 有很多论据,我不知道如何使用。 当您只想在文件中写入名称和几个数字时,最容易使用的功能是什么.txt? 编辑:添加了一段我的代码。 char name; int number; FILE *f; f = fopen("contacts.pcl", "a"); printf("\nNew contact name: "); scanf("%s", &name); printf("New contact number: "); scanf("%i", &number); fprintf(f, "%c\n[ %d ]\n\n", name, number); fclose(f);
149 c  linux 

8
将Python程序转换为C / C ++代码?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 改善这个问题 是否可以将Python程序转换为C / C ++? 我需要实现一些算法,而且我不确定性能差距是否足够大,足以证明我在C / C ++中做的所有痛苦(我不擅长)。我考虑过要编写一个简单的算法,并针对这种转换后的解决方案进行基准测试。如果仅此一项比Python版本要快得多,那么除了在C / C ++中做到这一点,我别无选择。
149 c++  python  c  code-generation 


5
为什么此代码容易受到缓冲区溢出攻击?
int func(char* str) { char buffer[100]; unsigned short len = strlen(str); if(len >= 100) { return (-1); } strncpy(buffer,str,strlen(str)); return 0; } 这段代码很容易受到缓冲区溢出攻击,因此我试图找出原因。我认为这与len被声明为a short而不是a 有关int,但我不确定。 有任何想法吗?

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.