我正在尝试使用 llvm 编译程序,遵循本教程,编写一个玩具编译器,但是当我尝试编译时,我不断收到
'fatal error: 'llvm/Value.h' file not found'
Run Code Online (Sandbox Code Playgroud)
我正在使用 llvm-config --cxxflags,它为编译器提供了目录
-I/usr/local/Cellar/llvm/3.5.0/include
Run Code Online (Sandbox Code Playgroud)
对于包含。Value.h 似乎确实在目录中
/usr/local/Cellar/llvm/3.5.0/include/IR,
Run Code Online (Sandbox Code Playgroud)
但是,如果我在包含中添加 IR,则会在不同的文件中弹出一个丢失的标头。
如果有帮助,我正在使用的完整 llvm-config 命令是,
llvm-config --libs core jit native --cxxflags --ldflags
Run Code Online (Sandbox Code Playgroud)
它的输出是,
-I/usr/local/Cellar/llvm/3.5.0/include -D_DEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -O3 -std=c++11 -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -fno-common -Woverloaded-virtual -Wcast-qual
-L/usr/local/Cellar/llvm/3.5.0/lib
-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT -lLLVMExecutionEngine -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMMC -lLLVMCore -lLLVMSupport
Run Code Online (Sandbox Code Playgroud)
我正在使用安装了自制软件的 osx 10.9.5 和 llvm 3.5。
任何建议将不胜感激,谢谢。
我正在尝试编写一个程序,以均匀(或尽可能接近)分布关于球体表面的点.我试图通过在单位球体上随机放置N个点,然后运行多个步骤,其中点相互排斥来实现此目的.
问题出在点数组的循环中.下面的代码在每个点上循环,然后在其中循环,再次遍历每个点并计算每个点对之间的排斥力.
for point in points.iter_mut() {
point.movement = Quaternion::identity();
for neighbour in &points {
if neighbour.id == point.id {
continue;
}
let angle = point.pos.angle(&neighbour.pos);
let axis = point.pos.cross(&neighbour.pos);
let force = -(1.0/(angle*angle)) * update_amt;
point.movement = point.movement * Quaternion::angle_axis(angle, axis);
}
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
src/main.rs:71:27: 71:33 error: cannot borrow `points` as immutable because it is also borrowed as mutable
src/main.rs:71 for neighbour in &points {
Run Code Online (Sandbox Code Playgroud)
和解释
the mutable borrow prevents subsequent moves, borrows, or modification of `points` until the …Run Code Online (Sandbox Code Playgroud) 我正在遍历一个数组,并且根据当前值,我想将迭代器传递给子函数并让它处理许多值,并在退出子函数时,继续遍历数组.下面是我到目前为止最接近的,但我一直在努力error: use of moved value: 'iter'.
我已经尝试过生活时间,但这对我来说也没有用.我现在花了大半天的时间在这上面,似乎无法随心所欲.任何帮助将不胜感激.谢谢.
enum Thing {
Three(char, char, char),
Four(char, char, char, char),
}
fn take_three <'a>(iter: &mut std::slice::Iter<'a, char>) -> Thing {
let a = iter.next().unwrap();
let b = iter.next().unwrap();
let c = iter.next().unwrap();
Thing::Three(*a,*b,*c)
}
fn take_four <'a>(iter: &mut std::slice::Iter<'a, char>) -> Thing {
let a = iter.next().unwrap();
let b = iter.next().unwrap();
let c = iter.next().unwrap();
let d = iter.next().unwrap();
Thing::Four(*a,*b,*c,*d)
}
fn parse_tokens (tokens: &Vec<char>) {
let mut iter = tokens.iter(); …Run Code Online (Sandbox Code Playgroud)