Tag: clang

使用Clang将C ++转换为C代码

我知道llvm可以用来将c ++转换成c代码。 我想知道clang是否可以做同样的事情(看到clang来自llvm )。 那么我可以使用clang将c ++代码转换为c代码吗? 如果你想知道我为什么要这样做,这是我的场景: PIC是一家微控制器制造商,它不制造c ++编译器,但确实为其大多数产品制作了c编译器。 我想用c ++编写,然后作为构建过程的一部分,将c ++代码转换为临时c文件,然后将其转换为PIC编译器,并且我已经为PIC micro编写了c ++代码。

LLVM cpp后端,是否取代c后端?

我的问题是关于CPP后端,它是否与C后端的用途相同? C后端是我最喜欢的LLVMfunction之一,我很不高兴它被删除了。 什么是真正的差异? 我非常感谢任何帮助。 参考: LLVM 3.1发行说明 “C后端已被删除……”

如何使用clang的-fsanitize = address在调试输出中获取行号?

我正在尝试调试clang与asan检测到的内存错误,但是错过了valgrind 。 但我不能让我的clang内置二进制文件给我任何有用的调试信息。 我可以用一个简短的测试程序certificate这一点: #include #include int main(void) { char *a = malloc(8); memset(a, 0, 9); free(a); return 0; } (显然这个错误将由 valgrind ,它纯粹是为了显示clang的问题。) 我用Clang 3.4-1ubuntu1编译它,如下所示: clang -fsanitize=address -fno-sanitize-recover -o test -O0 -g test.c 果然,。/ ./test中止,我看到一些调试信息: ==3309==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200000eff8 at pc 0x43e950 bp 0x7fff168724f0 sp 0x7fff168724e8 WRITE of size 9 at 0x60200000eff8 thread […]

如何在osx上使用clang编译共享库

源文件 rsetti::fastidio { /tmp }-> cat foo.c #include void ACFunction() { printf(“ACFunction()\n”); AGoFunction(); } 编译共享库 rsetti::fastidio { /tmp }-> clang -shared -o libfoo.so foo.c foo.c:4:3: warning: implicit declaration of function ‘AGoFunction’ is invalid in C99 [-Wimplicit-function-declaration] AGoFunction(); ^ 1 warning generated. Undefined symbols for architecture x86_64: “_AGoFunction”, referenced from: _ACFunction in foo-lFDQ4g.o ld: symbol(s) not […]

如何为clang添加一个新关键字,一个被视为主要关键字的关键字?

如何将新关键字添加到clang? new关键字应该是函数限定符。 申报部分将去哪里? 谢谢。

使用clang在命令行上编译多个Objective-C文件

希望简单的问题。 我正在尝试使用clang从命令行学习基本的Objective-C编译。 我知道Xcode是复杂项目的更好解决方案,我计划尽快转向它,但我个人认为如果我可以在终端中手动编译它,我会更好地理解一种语言,而对于小型的入门编程项目,我发现它更少在终端编译比在必须启动新项目时更麻烦。 所以问题是:如何编译包含多个文件的Objective-C程序(从命令行)? (我正在尝试从Kochan教科书的第7章开始执行分数程序,其中main.m和Fraction.m文件都是#import“Fraction.h”,以及导入Foundation框架的Fraction.h文件。)要编译单个文件,我使用类似的东西 clang -fobjc-arc main.m -o prog1 但是,如果我键入它并且我想在项目中包含除main.m之外的文件,我会收到错误,包括: ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 如果我尝试将其他文件作为参数添加到命令中,例如 clang -fobjc-arc main.m Fraction.h Fraction.m -o prog1 然后我明白了 clang: error: cannot specify -o when generating multiple output files 如果我然后删除-o参数就像 clang -fobjc-arc main.m […]

如何使用libclang找出成员函数是const还是volatile?

我有一个CXCursor的实例CXCursor_CXXMethod 。 我想知道函数是const还是volatile ,例如: class Foo { public: void bar() const; void baz() volatile; void qux() const volatile; }; 我在libclang的文档中找不到任何有用的东西。 我尝试了clang_isConstQualifiedType和clang_isVolatileQualifiedType但这些似乎总是在C ++成员函数类型上返回0 。

gcov内存不足/版本不匹配?

只是试图让gcov启动并运行,得到以下错误: $ gcov src/main.c -o build build/main.gcno:version ‘404*’, prefer ‘407*’ gcov: out of memory allocating 14819216480 bytes after a total of 135168 bytes 我正在使用clang / profile_rt来生成gcov需要的文件,我假设它可能与它有关。 但是,它正在我的另一台计算机上工作,所以我认为它可以以某种方式修复。

如何与clang建立铿锵声?

我已经成功地与MSVC和MinGW建立了铿锵声(3.2)。 但我认为这不是“纯粹”的铿锵声。 那么有人可以给我一些关于如何使用clang来构建clang(Windows / Linux)的说明或材料吗? 我们可以独立使用clang(不依赖于GCC或MSVC)。 谢谢大家!

为什么项目使用-I include开关给出危险?

在GCC中读取-I开关的精细打印,我很震惊地发现在命令行上使用它会覆盖系统包含。 来自预处理器的文档 “您可以使用-I覆盖系统头文件,替换您自己的版本,因为在标准系统头文件目录之前搜索这些目录。” 他们似乎并不撒谎。 在两个不同的endian.h系统上使用GCC 7,如果我创建一个文件endian.h : #error “This endian.h shouldn’t be included” …然后在同一目录中创建一个main.cpp (或main.c,相同的区别): #include int main() {} 然后使用g++ main.cpp -I. -o main编译g++ main.cpp -I. -o main g++ main.cpp -I. -o main (或clang,相同的区别)给了我: In file included from /usr/include/x86_64-linux-gnu/sys/types.h:194:0, from /usr/include/stdlib.h:394, from /usr/include/c++/7/cstdlib:75, from /usr/include/c++/7/stdlib.h:36, from main.cpp:1: ./endian.h:1:2: error: #error “This endian.h shouldn’t be included” […]