Tag: gcc

为什么前缀增量(++ x)比C中的后缀增量(x ++)更快?

可能重复: C ++中的i ++和++ i之间是否存在性能差异? 我听说它说前缀增量比C中的后缀增量要快。这是真的吗?为什么? ++ x vs x ++

gtk_window_set_resizable将窗口设置为最小值

我有这样的问题。 但它关注的是回答。 我的意思是那样的电话 gtk_window_set_default_size (GTK_WINDOW(window), width, height); gtk_window_set_resizable (GTK_WINDOW(window), FALSE); 把我的窗户设置为最小的一个。 你有什么想法吗? 谢谢。 尤里·

在“*”标记之前仍然是“错误:预期’=’,’,’,’;’,’asm’或’__attribute__’”

这是一个说明问题的小型纯C程序。 该计划没有做任何事情; 它是一个展示同样问题的大型程序的精简版本。 这是场景: Mac OS X Lion; gcc版本i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1(基于Apple Inc. build 5658)(LLVM build 2335.15.00); 示例代码: #include #include char huge *pbA; char huge *pbB; int main(int argc,char *argv[]) { pbA = (char huge *)farmalloc(2); pbB = pbA; *(pbB++) = ‘A’; return( 0 ); } 编译命令: gcc -c -Wall -O -g -pipe -D_SDL myTest.c 错误消息: myTest.c:4: error: […]

为什么我的程序在Ubuntu gcc上运行但不在OSX gcc上运行?

所以我的作业,我在Ubuntu中运行它,它编译得很好并且运行方式应该如此。 但是当我在Mac OSX中运行它时,会出现总线错误。 这是为什么? 我正在使用gcc -m32 source.c -o test编译 这是Mac OSX版本(添加了前缀下划线): #include #include #include char phrase[] = “slow but sure”; int sz; int phrasesz; char *arg; char *result; // Add any extra variables you may need here. int main(int argc, char* argv[]) { if (argc != 2) { printf(“Usage: %s takes 1 string argument.\n”, argv[0]); […]

无法将c代码链接到lapack / blas:未定义的引用

我已经尝试了几个小时,它让我发疯。 我得到的最后一个错误是: demo_cblas.c:(.text+0x83): undefined reference to `clapack_sgetrf’ demo_cblas.c:(.text+0xa3): undefined reference to `clapack_sgetri’ 我正在使用编译代码 /usr/bin/gcc -o demo_cblas demo_cblas.c -L /usr/lib64 -l :libgfortran.so.3 -L /usr/lib64 \ -llapack -L /usr/lib64 -lblas 我尝试使用和不使用libgfortran,使用不同的编译器gcc-33,gcc-47,gcc-48。 测试代码不是来自我,而是来自这个论坛…… #include #include #include #include “clapack.h” #include “cblas.h” void invertMatrix(float *a, unsigned int height){ int info, ipiv[height]; info = clapack_sgetrf(CblasColMajor, height, height, a, height, ipiv); info […]

-Wpedantic错误类型参数在转换后递增

我有一个代码 while (n–) { *((char*)dest++) = *((char*)src++); } 其中dest和src是void指针, n是一个大小。 目标是重新实现memcpyfunction。 当用gcc编译这个代码时,一切都很好,但是当我添加-Wpedantic标志时,我有四个警告“错误的类型参数来增加”。 Google告诉我,当尝试在void指针上使用算法时会发生这种情况,因为在这种情况下gcc将void类型视为1字节类型,但遗留编译器不应该这样做。 然后我必须将指针强制转换为char指针但是你可以看到我已经做到了! 任何的想法?

使用64位GCC在Cygwin上编译64位GSL

我试图在Windows 7机器上编译64位GSL。 以下是我采取的步骤: 下载并解压缩此处的GSL 1.15源代码。 通过编译最小程序测试我在Cygwin shell中有64位版本的GCC // simple.C int main() { ; return 0; } 运用 x86_64-w64-mingw32-gcc -m64 simple.C -o simple 在untarred文件夹中,我想将x86_64-w64-mingw32-gcc编译器传递给./configure但我不确定如何。 我查看了configure文件,但这很大,似乎是使用autoconf生成的。

交叉编译为什么不能找到共享库/如何进一步调试?

我试图在ubuntu上为我的arm-router交叉编译和链接聚合,我得到以下错误。 在过去,我认为我已经能够通过设置适当的环境变量来解决这个问题,但这次没有用。 任何人都可以帮我弄清楚为什么这可能不起作用: /home/ubuntu/Downloads/toolchain-arm_cortex-a9_gcc-4.9-linaro_musl-1.1.2_eabi/bin/../lib64/gcc/arm-openwrt-linux-muslgnueabi/4.9.1/../../../../arm-openwrt-linux-muslgnueabi/bin/ld: cannot find -lpopt 但是libpopt.so存在于:lrwxrwxrwx lrwxrwxrwx 1 root root 34 Sep 10 12:46 /lib/x86_64-linux-gnu/libpopt.so -> /lib/x86_64-linux-gnu/libpopt.so.0 我按照绝望的顺序设置以下环境变量无济于事。 LIBRARY_PATH=/lib/x86_64-linux-gnu/ LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/ PATH=/lib/x86_64-linux-gnu/:/usr/include/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 认为它可能是因为它可能是目标架构问题(也许我需要为交叉编译的目标构建libpopt.so)而导致我将libpopt.so从路由器复制到我的ubuntu并再次设置路径。 再无济于事。 我可能做错了什么? 谢谢

包含位域的结构的大小在不同的编译器上是不同的

我在VS和GCC上运行了以下程序。 #include int main(void) { struct bitfield { unsigned a : 3; char b; unsigned c : 5; int d; }bit; printf(“Size = %d\n”, sizeof(bit)); return 0; } 令我惊讶的是,VS给出16作为sizeof结构,GCC给出12。 我的理解是编译器尝试在1行(Bank0,Bank1,Bank2,Bank3)中分配a , char b和c ,在另一行中分配int d 。 这似乎表明结构的大小应该是8个字节(假设是32位系统)。 谁能解释这些结果? 我在64位机器上运行。

我们可以使用运算符“&”内联GCC ARM汇编吗?

我们可以使用运算符“&”内联GCC ARM汇编吗? 如果是,那么我有一个结构core_regx,我需要将该结构的成员r0的地址传递给下面提到的代码: asm volatile(“ldr r3, [%0,#0]”:: “r” (&(core_reg->r0))); 请检查此代码是否正确。