c相关内容

如何使用Bison解析C字符串

我在C文件中有一个字符串,如下所示: char *test = "print x"; 我想用我编写的Bison解析器来解析它。有可能吗? 推荐答案 Bison解析器根本不读取输入。它们只是通过重复调用yylex来获得一系列令牌。(或者,使用现代野牛,您可以创建一个“推式解析器”,它在连续的调用中被赋予令牌。)因此,实现yylex的对象负责输入。 如果您使用flex创建词法扫 ..
发布时间:2022-08-31 12:57:24 其他开发

需要在GDB中加载共享库的调试符号

我正在使用gdb调试一个使用libp线程的程序。有一个错误 发生在pthREAD_CREATE中,需要进入该函数。不幸的是,当我调试我的程序时,它不能正确地加载共享库符号,所以我不能跳过源代码并有意义地检查程序行为。这是我启动gdb时的输出。 Remote debugging using 127.0.0.1:21293 warning: limiting remote suggested p ..
发布时间:2022-08-29 14:01:57 其他开发

用于检查整数溢出的编译器标志

在下面的程序中,如果算术表达式出现问题,我们如何让编译器发出警告/错误。 如果算术表达式产生的值超过其类型的最大值,我希望编译器发出警告/错误。 我用gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)编译了下面的程序,使用的编译命令是gcc int_promo_flags.c -Wall -Wextra 我期待来自第long long int y ..

Cion和C99标准版不能使用可变长度数组吗?

我一直很高兴地与Clion一起编写代码,在使用C99标准的同时为大学创建一个项目。从今天起,数组声明的可变长度将不起作用。有谁知道为什么吗? 代码: int main() { // to allow debugging with CLION setbuf(stdout, 0); int number = 5; int myarray[number]; ..
发布时间:2022-08-28 20:00:44 其他开发

将nullptr传递给C函数是否安全?

我有一些用纯C编写的库,现在我正在创建一些单元测试,但测试库是用C++而不是C编写的。当我将NULL传递给被测API函数时,Clion会提示我传递nullptr而不是NULL。在这种情况下,将nullptr传递给纯C函数是否安全? 推荐答案 在这种情况下将nullptr传递给纯C函数是否安全? 我想是的。发件人the C++11 standard (4.10 Pointer co ..
发布时间:2022-08-28 19:07:14 C/C++开发

OpenSSL GFP函数替代GF2M函数的速度是否缓慢?

我在Fedora系统上使用OpenSSL,而Fedora定义了OPENSSL_NO_EC2M,因此EC_POINT_get_affine_coordinates_GF2m这样的函数不可用。我有为使用这些函数而编写的代码,我希望在Fedora上编译和运行这些函数。EC_POINT_get_affine_coordinates_GFp是不是替代产品(可能速度较慢)?通常,名称中包含GFp的函数是否会替 ..
发布时间:2022-08-25 18:51:21 其他开发

增加C/C++程序使用的(非堆栈)内存

我在一个内存为12 GB的Windows操作系统上运行一个内存密集型作业。根据我的计算,4 GB的内存应该足以运行该程序。我正在运行我用动态内存分配编写的程序(我有两个版本的程序,分别是malloc/free和new/delete))。 当我打开任务管理器时,我看到该程序似乎只使用了大约2 GB的RAM,即使我有更多的可用空间,并且页面文件大小当前设置为30 GB。有什么方法可以让CodeB ..
发布时间:2022-08-25 17:03:36 C/C++开发

对于32位或64位的程序来说,这意味着什么?

这个问题:How many bits does a WORD contain in 32/64 bit OS respectively?,提到字大小是指处理器寄存器的位大小--我认为它是指计算机处理器操作的位数/即处理器操作的最小“不可分割”位数。 对吗?使用Word/Excel等软件,安装者可以选择32位或64位安装。有什么不同? 由于计算机体系结构是固定的,在我看来,‘32位’的软件将 ..
发布时间:2022-08-25 16:57:22 其他开发

LD--导出--仅针对一个库的动态?

可以将--export-dynamic传递给ld,这将导出程序中的符号(以便它们可用于运行时加载的任何共享库): $ cat > test.c void foo() {} int main() { foo(); } ^D $ gcc test.c $ nm -D a.out | grep foo ...没什么。现在: $ gcc -Wl,--export-dynamic te ..
发布时间:2022-08-23 11:59:18 服务器开发

如何用LD链接器命令文件在特定地址放置常量?

我正在使用基于GCC的工具链的嵌入式处理器上开发一个C应用程序。在我的应用程序中,我需要在特定的内存位置放置一个标志。我需要有关链接器命令文件语法的帮助才能完成此操作。 推荐答案 在C文件中编写类似以下内容: static int flag __attribute__ ((section (".flag"))) __attribute__ ((__used__)) = 6; ..
发布时间:2022-08-23 11:21:03 其他开发

如何使函数具有库内部链接?

例如,如果我有两个文件foo.c和bar.o,并且foo.c包含引用bar.o中的函数bar()的函数foo(): int foo(int x) { x = bar(x); /* ... */ } 如何编译公开foo()但不公开bar()的静态或动态库?换句话说,我希望bar()仅在库内链接。 推荐答案 使用标准C时,您只能导出函数或不导出,没有“仅导出到这些文件”选项。因此 ..
发布时间:2022-08-23 11:09:40 其他开发

C-Externs-监控LD_PRELOAD库中的值的安全方法

背景 我帮助维护了一个简单的命令行工具diskmanager,用于监视糟糕的磁盘性能,这主要是由于同时使用同一磁盘的操作/用户太多所致。我的工作涉及维护一个库,libdisksupervisor.so,它偶尔用于通过以下方式启动磁盘管理器程序来监督它: LD_PRELOAD=/public/libdisksupervisor.so /sbin/diskmanager 我们这样做的原 ..
发布时间:2022-08-23 10:58:08 其他开发

带有全局变量的C_1d链接时间错误

我正在阅读《计算机系统:程序员的视角》,我看到了以下C文件: foo.c: void f(void); int x = 15213; int y = 15212; int main() { f(); printf("x = 0x%x y = 0x%x ", x, y); return 0; } Bar.c: double x; void f() ..
发布时间:2022-08-23 10:49:46 其他开发

GCC LD NoLoad链接器段生成可加载段

我正在开发一个ARM裸机应用程序,我已经用NOLOAD标记了一些部分。根据Understanding链接器脚本未加载部分》中的解释 ,我原以为生成的ELF文件不是具有这些节的可加载段(程序头),但它确实有。 这样对吗?为什么在ELF文件中将这些节标记为可加载? 由于链接器仍将数据放在.bss中,加载器如何知道不应加载节?还是因为NOLOAD只对初始化的符号(通常放在.data中)有意义,所 ..
发布时间:2022-08-23 10:29:02 其他开发

CS50(2019)习题集&过滤器&:模糊&不知何故不能正常工作

所以,我花了大约5个小时以上的时间试图找出我的代码出了什么问题。我试着用我在Paint中手动创建的3x3文件调试50,一切似乎都按预期进行;每个像素围绕自身进行3x3扫描,并忽略不存在的像素,如角落或边缘中的像素。每种颜色的最终平均值也是正确的。然而,不知何故,当我用check 50检查时,它给出了以下消息: 经过无数次的调整和挠头,我决定可能是时候向社区寻求帮助了。以下是我的代码: ..
发布时间:2022-08-22 16:50:35 其他开发

CS50-pset2-替换

我看不到pset2替换的代码丢失了什么。当我使用check 50测试程序时,它返回以下结果: :)substitution.c存在 :)substitution.c编译 :(使用ZYXWVUTSRQPONMLKJIHGFEDCBA作为密钥将“A”加密为“Z” 需要“密文:Z...”,而不是“密文:Z...” :(使用ZYXWVUTSRQPONMLKJIHGFEDCBA作为密钥将“a ..
发布时间:2022-08-22 16:35:03 其他开发

C中的int变量在未被调用时更改

提前道歉,我对此还很陌生。 我正在尝试根据POINTS数组和关联的分数值对拼写单词进行评分。 我先获取word1的字符串长度。 然后我创建了一个for循环,该循环将小写字母减去97(以得到0索引)的值添加到数组中。 您可以忽略其余代码,因为这就是问题所在。虽然stringlength变量只定义了一次,但我发现它在for循环的第二个周期中以某种方式发生了变化。四个字母的单词最初的 ..
发布时间:2022-08-22 16:24:40 其他开发