c相关内容
我在C文件中有一个字符串,如下所示: char *test = "print x"; 我想用我编写的Bison解析器来解析它。有可能吗? 推荐答案 Bison解析器根本不读取输入。它们只是通过重复调用yylex来获得一系列令牌。(或者,使用现代野牛,您可以创建一个“推式解析器”,它在连续的调用中被赋予令牌。)因此,实现yylex的对象负责输入。 如果您使用flex创建词法扫
..
我正在使用gdb调试一个使用libp线程的程序。有一个错误 发生在pthREAD_CREATE中,需要进入该函数。不幸的是,当我调试我的程序时,它不能正确地加载共享库符号,所以我不能跳过源代码并有意义地检查程序行为。这是我启动gdb时的输出。 Remote debugging using 127.0.0.1:21293 warning: limiting remote suggested p
..
此代码: #include #include int main(void) { bool flag = true; printf("%s ", "xxxzzz" + ( flag ? 3 : 0 )); return 0; } 使用-std=c11 -pedantic编译会导致警告: main.c:7:27: warning
..
我在项目中遇到了一些奇怪的GCC警告。让我们在3个文件中查看这个简单的示例: struct.h typedef struct { int a; long b; char *c; } myStruct; 函数.c #include #include #include "struct.h" myStruct* f
..
在下面的程序中,如果算术表达式出现问题,我们如何让编译器发出警告/错误。 如果算术表达式产生的值超过其类型的最大值,我希望编译器发出警告/错误。 我用gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)编译了下面的程序,使用的编译命令是gcc int_promo_flags.c -Wall -Wextra 我期待来自第long long int y
..
我一直很高兴地与Clion一起编写代码,在使用C99标准的同时为大学创建一个项目。从今天起,数组声明的可变长度将不起作用。有谁知道为什么吗? 代码: int main() { // to allow debugging with CLION setbuf(stdout, 0); int number = 5; int myarray[number];
..
我有一些用纯C编写的库,现在我正在创建一些单元测试,但测试库是用C++而不是C编写的。当我将NULL传递给被测API函数时,Clion会提示我传递nullptr而不是NULL。在这种情况下,将nullptr传递给纯C函数是否安全? 推荐答案 在这种情况下将nullptr传递给纯C函数是否安全? 我想是的。发件人the C++11 standard (4.10 Pointer co
..
我在Fedora系统上使用OpenSSL,而Fedora定义了OPENSSL_NO_EC2M,因此EC_POINT_get_affine_coordinates_GF2m这样的函数不可用。我有为使用这些函数而编写的代码,我希望在Fedora上编译和运行这些函数。EC_POINT_get_affine_coordinates_GFp是不是替代产品(可能速度较慢)?通常,名称中包含GFp的函数是否会替
..
我在一个内存为12 GB的Windows操作系统上运行一个内存密集型作业。根据我的计算,4 GB的内存应该足以运行该程序。我正在运行我用动态内存分配编写的程序(我有两个版本的程序,分别是malloc/free和new/delete))。 当我打开任务管理器时,我看到该程序似乎只使用了大约2 GB的RAM,即使我有更多的可用空间,并且页面文件大小当前设置为30 GB。有什么方法可以让CodeB
..
这个问题:How many bits does a WORD contain in 32/64 bit OS respectively?,提到字大小是指处理器寄存器的位大小--我认为它是指计算机处理器操作的位数/即处理器操作的最小“不可分割”位数。 对吗?使用Word/Excel等软件,安装者可以选择32位或64位安装。有什么不同? 由于计算机体系结构是固定的,在我看来,‘32位’的软件将
..
可以将--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
..
我正在使用基于GCC的工具链的嵌入式处理器上开发一个C应用程序。在我的应用程序中,我需要在特定的内存位置放置一个标志。我需要有关链接器命令文件语法的帮助才能完成此操作。 推荐答案 在C文件中编写类似以下内容: static int flag __attribute__ ((section (".flag"))) __attribute__ ((__used__)) = 6;
..
例如,如果我有两个文件foo.c和bar.o,并且foo.c包含引用bar.o中的函数bar()的函数foo(): int foo(int x) { x = bar(x); /* ... */ } 如何编译公开foo()但不公开bar()的静态或动态库?换句话说,我希望bar()仅在库内链接。 推荐答案 使用标准C时,您只能导出函数或不导出,没有“仅导出到这些文件”选项。因此
..
背景 我帮助维护了一个简单的命令行工具diskmanager,用于监视糟糕的磁盘性能,这主要是由于同时使用同一磁盘的操作/用户太多所致。我的工作涉及维护一个库,libdisksupervisor.so,它偶尔用于通过以下方式启动磁盘管理器程序来监督它: LD_PRELOAD=/public/libdisksupervisor.so /sbin/diskmanager 我们这样做的原
..
我正在阅读《计算机系统:程序员的视角》,我看到了以下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()
..
我正在开发一个ARM裸机应用程序,我已经用NOLOAD标记了一些部分。根据Understanding链接器脚本未加载部分》中的解释 ,我原以为生成的ELF文件不是具有这些节的可加载段(程序头),但它确实有。 这样对吗?为什么在ELF文件中将这些节标记为可加载? 由于链接器仍将数据放在.bss中,加载器如何知道不应加载节?还是因为NOLOAD只对初始化的符号(通常放在.data中)有意义,所
..
fmod的示例代码: #include #include int main(void) { double x = 0.14527, y = 3.14159; printf("fmod(x, y) = %.6lf ", fmod(x, y)); return 0; } 编译: $ gcc
..
所以,我花了大约5个小时以上的时间试图找出我的代码出了什么问题。我试着用我在Paint中手动创建的3x3文件调试50,一切似乎都按预期进行;每个像素围绕自身进行3x3扫描,并忽略不存在的像素,如角落或边缘中的像素。每种颜色的最终平均值也是正确的。然而,不知何故,当我用check 50检查时,它给出了以下消息: 经过无数次的调整和挠头,我决定可能是时候向社区寻求帮助了。以下是我的代码:
..
我看不到pset2替换的代码丢失了什么。当我使用check 50测试程序时,它返回以下结果: :)substitution.c存在 :)substitution.c编译 :(使用ZYXWVUTSRQPONMLKJIHGFEDCBA作为密钥将“A”加密为“Z” 需要“密文:Z...”,而不是“密文:Z...” :(使用ZYXWVUTSRQPONMLKJIHGFEDCBA作为密钥将“a
..
提前道歉,我对此还很陌生。 我正在尝试根据POINTS数组和关联的分数值对拼写单词进行评分。 我先获取word1的字符串长度。 然后我创建了一个for循环,该循环将小写字母减去97(以得到0索引)的值添加到数组中。 您可以忽略其余代码,因为这就是问题所在。虽然stringlength变量只定义了一次,但我发现它在for循环的第二个周期中以某种方式发生了变化。四个字母的单词最初的
..