Questions tagged «gcc»

GCC是GNU编译器集合。它是Linux上针对C,C ++,Go,Fortran和Ada的事实上的标准编译器,并且还支持许多其他语言和平台。除编译器外,GCC还具有一个工具链(libc,libstdc ++,objdump,nm等),该工具链已在多个平台和系统上广泛使用。


3
C语言中的long long int vs. long int vs. int64_t
在使用C ++类型特征时,我经历了一些奇怪的行为,并且将我的问题缩小到这个古怪的小问题,由于我不想留下任何可能引起误解的信息,因此我将作大量解释。 假设您有一个像这样的程序: #include <iostream> #include <cstdint> template <typename T> bool is_int64() { return false; } template <> bool is_int64<int64_t>() { return true; } int main() { std::cout << "int:\t" << is_int64<int>() << std::endl; std::cout << "int64_t:\t" << is_int64<int64_t>() << std::endl; std::cout << "long int:\t" << is_int64<long int>() << std::endl; …
87 c++  gcc  cstdint 


1
gcc / g ++:“没有这样的文件或目录”
g++ 给我以下形式的错误: foo.cc:<line>:<column>: fatal error: <bar>: No such file or directory compilation terminated. 使用编译C程序时相同gcc。 这是为什么? 请注意:这个问题已经被问过很多次了,但是每次都针对询问者的情况。这个问题的目的是要提出一个问题,即其他人可以作为的复制品一劳永逸地关闭;一个常见问题。
87 c++  c  gcc  g++  c++-faq 

4
我可以在Xcode中使用C ++ 11吗?
我正在考虑auto在某些跨平台项目(Windows + Mac)中使用某些C ++ 11功能(例如)。在Windows上,Visual Studio支持即将到来的C ++ 11标准的某些部分,这将使我能够简化部分代码库,因此自然而然地,我将有兴趣开始使用这些功能。 但是据我所知,当前的XCode版本(3.2.4 + GCC 4.2)根本不支持任何C ++ 11功能。我可以以某种方式升级GCC版本或CLang版本吗?还是我应该只咬一口舌头,等待苹果在将来的某个时候打包新版本?
86 c++  xcode  gcc  c++11  clang 



4
错误:未知类型名称“ bool”
我下载了源代码,并希望编译扫描程序的文件。它产生此错误: [meepo@localhost cs143-pp1]$ gcc -o lex.yy.o lex.yy.c -ll In file included from scanner.l:15:0: scanner.h:59:5: error: unknown type name ‘bool’ In file included from scanner.l:16:0: utility.h:64:38: error: unknown type name ‘bool’ utility.h:74:1: error: unknown type name ‘bool’ In file included from scanner.l:17:0: errors.h:16:18: fatal error: string: No such file or directory …
86 c  gcc  lex 

2
arm64和aarch64之间的区别
我有两个“解锁”设备,一个iPad mini 3和一个Galaxy Edge 6,都配备了一个终端和一组简约的unix命令。我以为两个设备都具有arm64处理器,但是当我运行时 uname -a 在这两种设备上,我得到以下信息: 对于iPad mini 3: xxxxs-iPad:/var/mobile root# uname -a Darwin xxxx-iPad 14.0.0 Darwin Kernel Version 14.0.0: Wed Jun 24 00:50:15 PDT 2015; root:xnu-2784.30.7-30/RELEASE_ARM64_S5L8960X iPad4, **arm64**, J85mAP 适用于Samsung Galaxy s6 Edge: u0_a203@zerolte:/ $ uname -a Linux localhost 3.10.61-4497415 #1 SMP PREEMPT Thu Apr 9 15:06:40 …
86 android  ios  gcc  arm  arm64 

3
C和C ++中几乎相同的代码在执行时间上的巨大差异(x9)
我正尝试通过www.spoj.com解决此问题:FCTRL-阶乘 您真的不必阅读它,如果您好奇的话就去做:) 首先,我用C ++实现了它(这是我的解决方案): #include <iostream> using namespace std; int main() { unsigned int num_of_inputs; unsigned int fact_num; unsigned int num_of_trailing_zeros; std::ios_base::sync_with_stdio(false); // turn off synchronization with the C library’s stdio buffers (from https://stackoverflow.com/a/22225421/5218277) cin >> num_of_inputs; while (num_of_inputs--) { cin >> fact_num; num_of_trailing_zeros = 0; for (unsigned int fives …
85 c++  c  performance  gcc  iostream 

4
有选择地仅对翻译单元的一部分禁用GCC警告吗?
与此MSVC预处理程序代码最接近的GCC是什么? #pragma warning( push ) // Save the current warning state. #pragma warning( disable : 4723 ) // C4723: potential divide by 0 // Code which would generate warning 4723. #pragma warning( pop ) // Restore warnings to previous state. 我们在通常包含的标头中有代码,我们不想生成特定的警告。但是,我们希望包含那些标题的文件继续生成该警告(如果项目启用了该警告)。

10
将指针转换为整数
我正在尝试将现有代码改编为64位计算机。主要问题在于,在一个函数中,以前的编码器使用void *参数,该参数在函数本身中转换为合适的类型。一个简短的例子: void function(MESSAGE_ID id, void* param) { if(id == FOO) { int real_param = (int)param; // ... } } 当然,在64位计算机上,我得到以下错误: error: cast from 'void*' to 'int' loses precision 我想更正此问题,以便它仍可在32位计算机上且尽可能干净地工作。任何的想法 ?
85 c++  gcc  casting  64-bit  32-bit 


8
为什么会出现C malloc断言失败?
我正在实现分而治之多项式算法,因此可以将其对照OpenCL实现进行基准测试,但无法malloc正常工作。当我运行程序时,它会分配一堆东西,检查一些东西,然后将其发送size/2给算法。然后,当我malloc再次点击该行时,它会吐出以下内容: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end …
85 c  gcc  malloc  assertion 

2
将两个GCC编译的.o目标文件合并为第三个.o文件
一个人如何将两个由GCC编译的.o目标文件组合到第三个.o文件中? $ gcc -c a.c -o a.o $ gcc -c b.c -o b.o $ ??? a.o b.o -o c.o $ gcc c.o other.o -o executable 如果您有权访问源文件,则-combineGCC标志将在编译之前合并源文件: $ gcc -c -combine a.c b.c -o c.o 但是,这仅适用于源文件,GCC不接受.o文件作为此命令的输入。 通常,链接.o文件无法正常工作,因为您无法使用链接器的输出作为输入。结果是一个共享库,并且没有静态链接到生成的可执行文件中。 $ gcc -shared a.o b.o -o c.o $ gcc c.o other.o -o executable $ …

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.