我正在尝试使用 Rusts 功能有条件地编译我的板条箱中的模块,并且仅在启用功能时才使用它。当设置该功能时,条件编译工作正常,但在未设置该功能时拒绝编译。
我使用相同的功能标志有条件地导入主模块中的模块,因此我的假设是,当不使用该功能时不应导入该模块。
#[cfg(feature = "debug")]
pub mod k {
pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)
以及我如何在 main 中使用它
pub fn main() {
if cfg!(feature = "debug") {
use self::k;
let _s = k::S {x: 4, y: 5};
}
let g = vec![1, 2, 4];
println!("{:?}", g);
}
Run Code Online (Sandbox Code Playgroud)
如果我通过标志启用该功能,--features那么它会按预期进行编译:
#[cfg(feature = "debug")]
pub mod k {
pub struct S { pub x: i32, pub y: i32}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我没有通过时,--features它会失败,我的期望是它应该跳过带有该cfg!集合的块。 …
我打算在github上的用户页面上发表文章.我想把我的文章写成markdown文件并将它们推送到我的user.github.io repo中的一个分支,让github自动为我生成HTML文件,而不必使用像Jekyll这样的工具.可以吗?如果是这样我该怎么办?我将index.markdown文件推送到gh-pages分支但无法找到任何自动生成的html文件.
我正在研究这里定义的malloc的实现:
http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf.
作者创建了一个自然地在4字节边界上对齐的元数据结构,然后在元数据结构之后将x字节的请求与4字节边界对齐,该元数据结构实际上充当块的头部.pdf指出,由于元数据和请求现在已对齐,因此结果数据将完全对齐.如果对sbrk()的第一次调用返回与4字节边界对齐的堆的基址,则结果可以解决.sbrk()总是在初始调用中返回4字节(或64位系统的情况下为8字节)对齐的地址吗?
我从英特尔的 TBB 网站下载了英特尔 TBB 的预构建标头和库。我更新了 ldconfig 以将 tbb 共享库添加到 /usr/lib。然而,在使用 -tbb 编译时,使用 g++ ld 的代码返回 -1,因为它无法找到 libtbb
libtbb.so.2 存在于 /usr/lib/ 中
这是我完整的 g++ 输出
g++ hellotbb.cpp -o htbb -I$HOME/libs/tbb43/include -v -ltbb
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic …Run Code Online (Sandbox Code Playgroud) 当问题引起我的注意时,我正在使用erlang中的匿名函数.该功能定义如下
-module(qt).
-export([ra/0]).
ra = fun() -> 4 end.
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用
-export(Ra/0]).
Ra = fun() -> 4 end.
Run Code Online (Sandbox Code Playgroud)
这也没有人能告诉我为什么erlang表现出这种行为?
在枚举匹配时出现问题。结构类似于此:
enum WebEvent {
PageLoad,
PageUnload,
KeyPress(char),
Paste(String),
Click { x: i64, y: i64 },
}
enum KeyEvent {
UpPressed,
DownPressed,
}
enum Event {
WebEvent,
KeyEvent,
}
fn inspect(event: Event) {
match event {
Event::WebEvent::PageLoad => println!("page loaded"),
Event::WebEvent::PageUnload => println!("page unloaded"),
Event::WebEvent::KeyPress(c) => println!("pressed '{}'.", c),
Event::WebEvent::Paste(s) => println!("pasted \"{}\".", s),
Event::WebEvent::Click { x, y } => {
println!("clicked at x={}, y={}.", x, y);
}
Event::KeyEvent => {
println!("got a key event");
}
}
}
fn main() { …Run Code Online (Sandbox Code Playgroud)