草庐IT

clang_complete

全部标签

git - Bash 完成 : Honor repository-specific Git alias in alias completion

假设bash配置了以下别名:aliasup="git--git-dir/path/to/backup/.git"那个特定的存储库-并且只有那个存储库-具有以下git别名:[alias]backup=commit--allow-empty-message如何up自动完成backup?这会自动完成backup但不是up:cd/a/different/dirgit--git-dir=/path/to/backup/.gitba这会自动完成up使用标准git命令但不使用backup:complete-obashdefault-odefault-onospace-F__git_wrap__git

git - clang-format 可以告诉我是否需要更改格式吗?

有没有一种方法可以在报告文件是否符合指定格式的模式下运行clang-format?一种试运行模式,它报告是否需要更改,但不进行更改。理想情况下,如果文件需要更改,我希望clang-format只返回一个非零退出代码。或者,更理想的是,一个非零退出代码和一个需要在标准输出上更改的文件列表。我试图让问题保持通用,以便更多人可以回答,但我想做的是编写一个git预提交Hook,它将拒绝任何与预期的.clang不匹配的提交-格式。在索引中的文件列表上运行clang-format很容易。但是很难知道clang-format是否真的改变了什么。我有一个基于-output-replacements-x

objective-c - 在 clang 编译期间无法找到 objc.h

我在Ubuntu12上。我正在尝试使用clang编译Objective-Chello_world应用程序。这是来源:#importintmain(intargc,constchar*argv[]){NSAutoreleasePool*pool=[[NSAutoreleasePoolalloc]init];NSLog(@"helloworld");[pooldrain];return0;}我使用这个命令行:./usr/share/GNUstep/Makefiles/GNUstep.shclangh.m`gnustep-config--objc-flags`-lgnustep-base-o

c++ - 使用 Clang 编译时,链接器无法在 64 位 Mint OS 下找到 32 位库

我刚刚在64位Mint操作系统(版本17)上安装了Clang3.5。我正在尝试以32位编译我的程序,但是我遇到了问题。我的主目录中有一个名为test.cpp的文件,其中包含以下代码:#includeintmain(){std::cout然后我运行以下命令:$clang++-m32-Wl,--verbosetest.cpp|greplibgcc我得到以下输出:$clang++-m32-Wl,--verbosetest.cpp|greplibgcc/usr/bin/ld:skippingincompatible/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8

c - 对于 C 开发人员,Clang 版本 2.8 和 3.1 之间有什么实际区别?

我将专门使用C语言工作。Ubunutu10.10将从其存储库中检索Clang2.8版并完全安装它。我已经从源代码编译了Clangv3.1并将其添加到路径中(在卸载Clang2.8之后),但是无法通过这种方式访问​​它的手册页,并且偶尔会有一种关于没有完全“安装它”的唠叨感觉,虽然它在某些测试中似乎功能齐全。从C开发人员(实际上是学生)的角度来看,2.8版和3.1版之间有什么实际区别吗?我只在C中工作,不会利用它的C++或objective-c功能。我相信最近Clang的大部分开发都在扩展它的C++功能。 最佳答案 我发现的显着差异是

c - gcc/clang 如何假定字符串常量的地址是 32 位的?

如果我编译这个程序:#includeintmain(intargc,char**argv){printf("helloworld!\n");return0;}对于x86-64,asm输出使用movl$.LC0,%edi/callputs.(Seefullasmoutput/compileoptionsongodbolt.)我的问题是:GCC如何知道字符串的地址可以放入32位立即操作数?为什么不需要使用movabs$.LC0,%rdi(即movr64,imm64,不是零或符号扩展的imm32)。AFAIK,没有什么说加载程序必须决定在任何特定地址加载数据部分。如果字符串存储在1ULL以上

c++ - C、C++ : Shared libraries: Are single functions or complete libraries loaded into memory?

在静态编译中,只有程序实际需要的库函数才会链接到程序。共享库怎么样?动态链接器是只将程序实际需要的函数加载到内存中,还是始终加载整个共享库?如果它是函数,我如何获得程序的实际大小,包括它在运行时加载的函数?谢谢!奥利弗 最佳答案 通过静态编译,只有程序实际需要的库函数才会链接到程序。共享库怎么样?共享库由程序以符号方式引用,也就是说,程序将通过名称识别它所链接的共享库。动态链接器是仅将程序实际需要的函数加载到内存中,还是始终加载整个共享库?程序将引用共享库中的特定入口点和数据对象。共享库将作为单个大对象映射到内存中,但内核只会调入实

c++ - Clang/GCC 真的支持延迟加载功能吗?

如果您有真实经历与上述标题相关的内容,您是否介意对此发表评论?我试图在Ubuntu上使用Clang和GCC延迟加载一个共享对象(我实际上不介意使用哪个编译器),但它们看起来并不真正支持任何延迟加载功能(我期望延迟加载功能在父对象中放置一个stub,该对象试图在需要功能时按需加载另一个对象,但实际上并没有)。以下命令显示我试图将libbar.so延迟加载到libfoo.so:clangbar.c-fPIC-shared-olibbar.soclangfoo.c-Wl,-zlazy,lL'/path/to/where/lib/is',-lbar-ofoo如果libbar.so不存在,您将看

c - 这种对 int64_t 的处理是 GCC 和 Clang 错误吗?

现在,你们中的一些人可能会想大喊未定义的行为,但是有一个问题。int64_t类型不是由C标准定义的,而是由POSIX定义的.POSIX将此类型定义为:asignedintegertypewithwidthN,nopaddingbits,andatwo's-complementrepresentation.它不会将此留给实现来定义,而且绝对不允许将其视为无界整数。linux$catx.c#include#include#includeintstupid(int64_ta){return(a+1)>a;}intmain(void){intv;printf("%d\n",v=stupid(I

clang 中的代码覆盖率

我正在尝试为在DebianLinux上使用clang编译的小型C程序生成代码覆盖率文件。这是我所做的:neuron@debian:~/temp$lsmain.ctest.ctest.hneuron@debian:~/temp$clang*.cneuron@debian:~/temp$./a.out0这完全符合预期,我可以编译和运行东西。现在尝试启用覆盖。neuron@debian:~/temp$clang--coverage*.c/usr/bin/ld:cannotfind/usr/bin/../lib/libprofile_rt.a:Nosuchfileordirectoryclan