我遇到了emacs/auctex填充段落的问题,该段落在每个$blabla$块之后插入换行符,导致代码难以理解.例如,点击M-q以下长线:
a $1$ b $2$ c $3$ d $4$ e $5$ f $6$ g $7$ h $8$ i $9$ j $10$ k $11$ l $12$ m $13$ n $14$ o $15$
Run Code Online (Sandbox Code Playgroud)
得到:
a $1$
b $2$
c $3$
d $4$
e $5$
f $6$ g $7$ h $8$ i $9$ j $10$ k $11$ l $12$ m $13$ n $14$ o $15$
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
a $1$ b $2$ c $3$ d $4$ e $5$ f $6$ g …Run Code Online (Sandbox Code Playgroud) 当我使用meld作为git mergetool来解决合并时的冲突时,meld向我展示了git自动解决的本地/输出和远程/输出文件(蓝色或绿色)之间的差异,而不仅仅是实际冲突(红色突出显示) .当我按下向下箭头时,它会转到下一个(蓝色/绿色)差异,而不是下一个冲突(红色).在本主题中,图片说明了这一点.
怎么可能: - 忽略不冲突的差异 - 或者进入下一个冲突(比如在kdiff3中),而不是停止差异?
我不明白在调度程序下使用MPI运行时如何在计算节点上设置环境.
我做:
mpirun -np 1 --hostfile ./hostfile foo.sh
Run Code Online (Sandbox Code Playgroud)
用foo.sh:
#!/usr/bin/env zsh
echo $LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
然后我没有恢复我在交互式shell中的LD_LIBRARY_PATH ...在与MPI连接时执行/获取的初始化文件是什么?
注意:我在zsh下,我试图把东西放在.zprofile或.zshenv而不是.zshrc中,但它似乎没有做出改变......我的LD_LIBRARY_PATH是在一个.profile中设置的. .bshrc,由.zshrc提供.
我正在尝试将googletest与CMake / Ctest一起使用。我有几个用于测试的源文件(每个文件包含许多TEST / TEST_F / ...命令),这些文件位于多个目录中。我希望与给定源相关的测试在与源文件相同的目录中执行。另外,我更喜欢测试源文件的构建过程本身就是一个测试。所以我做了类似的事情:
file(GLOB_RECURSE test_srcs
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"tests/*.cpp")
foreach(test_src ${test_srcs})
get_filename_component(test_dir ${test_src} DIRECTORY)
get_filename_component(test_exe ${test_src} )NAME_WE)
add_executable(${test_exe} EXCLUDE_FROM_ALL tests/gtest_main.cpp ${test_src})
set_target_properties(${test_exe}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${test_dir}
)
target_link_libraries(${test_exe} gtest)
add_test(NAME build_${test_exe} COMMAND "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target ${test_exe})
set_tests_properties(build_${test_exe} PROPERTIES FIXTURES_SETUP ${test_exe})
gtest_discover_tests(${test_exe}
TEST_LIST list
WORKING_DIRECTORY ${test_dir}
PROPERTIES DEPENDS build_${test_exe}
PROPERTIES FIXTURES_REQUIRED ${test_exe}
)
endforeach()
Run Code Online (Sandbox Code Playgroud)
但是似乎没有考虑我试图在测试之间声明的依赖项:测试的构建不一定在执行基础测试之前进行...
如果我gtest_add_tests将以下内容替换为gtest_discover_tests,则可以使用它:
gtest_add_tests(
TARGET ${test_exe}
SOURCES ${test_src}
WORKING_DIRECTORY ${test_dir}
TEST_LIST tlist
)
set_tests_properties(${tlist} PROPERTIES FIXTURES_REQUIRED ${test_exe})
Run Code Online (Sandbox Code Playgroud)
我错过了什么gtest_discover_tests吗?
我想编写一些适用于不同类型的程序.我打算使用这里和这里描述的flibs中使用的"include"方法.我在这里给出一个简单的例子.
! -------------------------------------------------------------- !
module data_type
type ivalue
integer :: v
end type
type rvalue
real(8) :: v
end type
end module data_type
! -------------------------------------------------------------- !
module imod
use data_type, only: T => ivalue
include "template.f90"
end module imod
! -------------------------------------------------------------- !
module rmod
use data_type, only: T => rvalue
include "template.f90"
end module rmod
! -------------------------------------------------------------- !
module mod
use imod, only:
& ivalue => T,
& iprintme => printme
use rmod, only:
& rvalue …Run Code Online (Sandbox Code Playgroud) 我有一个接口块来定义一个通用子例程,该子例程有一个假定大小的数组作为虚拟参数(以便能够作用于传递数组的“中间”,如 C 指针),但它无法编译。这是一个简单的例子:
module foo
interface sub
module procedure isub
module procedure dsub
end interface
contains
subroutine isub(a,n)
integer, intent(in) :: a(*), n
integer :: i
print*, 'isub'
do i=1,n
print*, a(i)
enddo
end subroutine isub
subroutine dsub(a)
real(8), intent(in) :: a(*)
integer, intent(in) :: n
integer :: i
print*, 'dsub'
do i=1,n
print*, a(i)
enddo
end subroutine dsub
end module foo
program test
use foo
implicit none
integer :: ai(4)
real(8) :: ad(4)
ai=(/1,2,3,4/)
ad=(/1.,2.,3.,4./)
call sub(ai,3)
call sub(ad,3) …Run Code Online (Sandbox Code Playgroud) 我对以下两个简单的片段感到困惑:
#include <vector>
struct A{
int foo(int i) const {return v[i];}
std::vector<int> v;
};
int f(const A &a, int i) {
int j;
j=a.foo(i);
j=a.foo(i);
return j;
}
Run Code Online (Sandbox Code Playgroud)
它给出了汇编代码:
movsxd rax, esi
mov rcx, qword ptr [rdi]
mov eax, dword ptr [rcx + 4*rax]
ret
Run Code Online (Sandbox Code Playgroud)
和
movsxd rax, esi
mov rcx, qword ptr [rdi]
mov eax, dword ptr [rcx + 4*rax]
ret
Run Code Online (Sandbox Code Playgroud)
这使:
push rbp
push rbx
push rax
mov ebp, esi
mov rbx, rdi
call _ZNK1A3fooEi
mov rdi, rbx …Run Code Online (Sandbox Code Playgroud) 考虑这个简单的例子:
class Base {
virtual void foo() {};
};
class Derived: public Base {
void foo() {};
};
Base *b = new Derived;
Derived *d = new Derived;
b->foo();
d->foo();
Run Code Online (Sandbox Code Playgroud)
我的问题是:通过派生类指针调用在基类(但不在派生类中)中声明为虚拟的成员函数是否使用vtable机制(并付出代价)?在示例中b->foo()使用vtable机制来调用Derived::foo(),但是d->foo()?
如果是,那么如何规避这种行为:当明确使用Derived指针时,我想直接调用该Derived::foo()方法而不支付vtable的成本,就像基类不存在一样?
我在Ubuntu 16.04上安装了Docker CE,当我尝试时:
docker pull microsoft/windowsservercore
Run Code Online (Sandbox Code Playgroud)
它失败:
Using default tag: latest
latest: Pulling from microsoft/windowsservercore
3889bb8d808b: Pulling fs layer
da87b55a9b63: Pulling fs layer
image operating system "windows" cannot be used on this platform
Run Code Online (Sandbox Code Playgroud)
是否可以在具有docker的Linux主机上运行Windows映像?如果是,我该怎么办?
在下面的代码片段中,函数B::f()是函数的“包装器” A::f()。但我假设A::f()返回类型是一种“不透明”类型,我不知道它是否具有值或引用语义。所以我不能使用autoorconst auto &作为 的返回类型B::f()。我认为这auto &&可以解决问题,但它并不像auto &&推断的那样A::OpaqueType &......这里是否可以避免写作A::OpaqueType?
#include <iostream>
struct A {
using OpaqueType=int; // But it could have been `const int &`
OpaqueType f() const {
return i;
}
int i=42;
};
struct B {
// how could I use `auto` here to avoid writing the `A::OpaqueType`?
// I would have expected that `auto &&` would do the trick …Run Code Online (Sandbox Code Playgroud)