2K+ 浏览量
信号量是进程或线程同步的概念。在这里,我们将了解如何在实际程序中使用信号量。在 Linux 系统中,我们可以获得 POSIX 信号量库。要使用它,我们必须包含 semaphores.h 库。我们必须使用以下选项编译代码。gcc program_name.c –lpthread -lrt我们可以使用 sem_wait() 来锁定或等待。并使用 sem_post() 来释放锁。信号量初始化 sem_init() 或 sem_open() 用于进程间通信 (IPC)。示例#include #include #include #include sem_t mutex; void* thread(void* arg) { //充当线程的功能 sem_wait(&mutex); //等待状态 ... 阅读更多
1K+ 浏览量
在这里,我们将了解如何在 C 语言中创建自毁代码。自毁代码基本上是执行代码,然后在执行后删除可执行文件。此任务非常简单。我们需要获取要删除的可执行文件名。我们可以使用命令行参数。argv[0] 将保存可执行文件名。然后使用 remove() 函数,我们可以将其删除。在程序中,我们可以看到在删除该文件后打印了一行。所以现在问题来了,当前文件不存在时,下一行是如何执行的?实际上,整个转换后的... 阅读更多
216 浏览量
在 C++11 中,引入了 lambda。Lambda 基本上是代码的一部分,可以嵌套在其他函数调用语句中。通过将 lambda 表达式与 auto 关键字结合使用,可以稍后使用它们。在 C++14 中,这些 lambda 表达式得到了改进。在这里,我们可以获得广义 lambda。例如,如果我们想创建一个可以添加整数、添加数字以及连接字符串的 lambda,那么我们必须使用此广义 lambda。lambda 表达式的语法如下所示:[](auto x, auto y) { return x + y; }让我们看一个示例来更好地理解。示例#include ... 阅读更多
3K+ 浏览量
在这里,我们将了解如何使用 C 语言在给定范围内生成随机数。为了解决这个问题,我们将使用 srand() 函数。当前时间将用于为 srad() 函数播种。此函数无法在任何范围内生成随机数,它可以在 0 到某个值之间生成数字。因此,为此,我们必须遵循一个技巧。我们将生成 0 到 (upper – lower + 1) 之间的随机数,然后添加下限进行偏移。示例#include #include #include void generate_random(int l, int r, int count) { //这将生成随机数 ... 阅读更多
要创建高精度计时器,我们可以使用 chrono 库。此库具有高分辨率时钟。这可以以纳秒为单位计数。在此程序中,我们将看到纳秒级的执行时间。我们首先获取时间值,然后在最后获取另一个时间值,然后找到差值以获取经过的时间。在这里,我们使用空循环来暂停一段时间的效果。示例#include #include typedef std::chrono::high_resolution_clock Clock; main() { auto start_time = Clock::now(); for(int i = 0; i
分段错误是运行时错误之一,它是由内存访问冲突引起的,例如访问无效的数组索引、指向某些受限地址等。在本文中,我们将了解如何使用 GDB 工具检测此类错误。让我们看看代码和查找错误的相应步骤。示例#include main() { int* ptr = NULL; *ptr = 1; //尝试访问未知内存位置 printf("%p", ptr); }使用“gcc –g program_name.c”编译代码,并使用“./a.out”运行输出soumyadeep@soumyadeep-VirtualBox:~/Cpp_progs$ ./a.out Segmentation fault (core dumped)发生了分段错误。编写“gdb ./a.out core”soumyadeep@soumyadeep-VirtualBox:~/Cpp_progs$ gdb ... 阅读更多
147 浏览量
此 mbrtowc() 函数用于将多字节序列转换为宽字符字符串。这将返回多字节字符的长度(以字节为单位)。语法如下。mbrtowc (wchar_t* wc, const char* s, size_t max, mbstate_t* ps)参数为:wc 是指向存储结果宽字符位置的指针。s 是指向作为输入的多字节字符字符串的指针max 是 s 中可以检查的最大字节数ps 指向转换状态,用于解释多字节字符串。示例#include using namespace std; void display(const char* s) { mbstate_t ps = mbstate_t(); //初始... 阅读更多
8K+ 浏览量
getopt() 是用于获取命令行选项的内置 C 函数之一。此函数的语法如下:getopt(int argc, char *const argv[], const char *optstring)opstring 是字符列表。它们中的每一个都表示一个单字符选项。此函数返回许多值。它们如下:如果选项需要一个值,则该值将由 optarg 指向。当没有更多选项要处理时,它将返回 -1返回“?”以显示这是一个无法识别的选项,将其存储到 optopt 中。有时某些选项需要一些值,如果... 阅读更多
12K+ 浏览量
在 C 或 C++ 中,我们会遇到各种错误。这些错误可以分为五种不同的类型。它们如下:语法错误运行时错误链接器错误逻辑错误语义错误让我们逐一了解这些错误:语法错误当违反 C++ 编写技巧或语法的规则时,就会发生此类错误。此类错误通常在编译前由编译器指示。有时这些被称为编译时错误。在此示例中,我们将了解如果在一行之后不加分号,如何获取语法错误。示例#include main() { printf("Hello World") }输出错误] 预期... 阅读更多
在 C 语言中,我们获得了 qsort() 函数。它用于使用快速排序技术对某些数组进行排序。在此函数中,我们必须传递比较器函数。此比较器函数接受两个参数。然后比较它们并获取它们之间的相对顺序。这两个参数是指针,并转换为 const void* 类型。语法如下:int comparator(const void* p1, const void* p2);返回值有三种类型:小于 0。p1 指向的元素将位于第二个元素之前。等于 0。两个值相同。大于 0。p1 指向的元素将... 阅读更多