我难以设法创建一个排除组的Emacs正则表达式.[^]排除集合中的单个字符,但我想排除特定的字符序列:类似的东西[^(not|this)],以便包含"not"或"this"的字符串不匹配.
原则上,我可以写([^n][^o][^t]|[^...]),但还有另一种更清洁的方式吗?
刚才我不得不浏览网站,找出为什么模板类模板成员函数给出了语法错误:
template<class C> class F00 {
template<typename T> bar();
};
...
Foo<C> f;
f.bar<T>(); // syntax error here
Run Code Online (Sandbox Code Playgroud)
我现在意识到模板括号被视为关系运算符.要执行预期的操作,需要以下奇怪的语法,cf 模板:模板函数与类的模板成员函数不兼容:
f.template bar<T>();
Run Code Online (Sandbox Code Playgroud)
您遇到的C++/C++模板的其他奇怪方面和问题是不是您认为是常识的东西?
我有一个多重嵌套的命名空间:
namespace first {namespace second {namespace third {
// emacs indents three times
// I want to intend here
} } }
Run Code Online (Sandbox Code Playgroud)
所以emacs缩进到第三个位置.但是我只想要一个缩进.
是否有可能简单地完成这种效果?
对于我自己的教育,我很好奇编译器使用哪个C++前端和后端.您能否告诉我使用以下技术的地方以及它们具有哪些标志/优势?
Open64 - 它是后端,前端还是两者兼而有之?哪些编译器使用它?我在CUDA编译器中遇到它.
EDG - 据我所知,这是英特尔编译器和Comeau的前端使用.其他编译器使用它吗?我在boost源代码中找到了不少引用它.
ANTLR - 这是一般解析器.有没有常见的编译器使用它?
关于编译器:
使用前端/后端gcc编译器套件使用?它与其他编译器有共同的遗产吗?
前端/后端PGI和PathScale编译器使用什么?
前端/后端XL编译器使用的是什么(IBM产品).
互联网上的深入链接或您的个人技术诀窍会很棒.我做了一些谷歌搜索,但我通常遇到的信息相当肤浅.
谢谢.
假设我有:
double f(const double *r) {
return 0*(r[0]*r[1]);
}
Run Code Online (Sandbox Code Playgroud)
如果值可能是inf或nan,编译器是否应该能够优化分段,还是必须执行操作?
gcc -O3 -S test.c:
.file "test.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
movsd (%rdi), %xmm0
mulsd 8(%rdi), %xmm0
mulsd .LC0(%rip), %xmm0
ret
.cfi_endproc
.LFE0:
.size f, .-f
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LC0:
.long 0
.long 0
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)
似乎没有消除?
啊哈:
gcc -O3 -ffast-math -S test.c
.file "test.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
xorpd %xmm0, …Run Code Online (Sandbox Code Playgroud) 我在linux上使用gcc来编译C++代码.有些例外情况不应该处理,应该关闭程序.但是,我希望能够显示异常字符串:
例如:
throw std::runtime_error(" message");不显示消息,仅显示错误类型.我也想显示消息.有办法吗?
它是一个库,我真的不想把catch语句和库用户决定.但是,现在库用户是fortran,它不允许处理异常.原则上,我可以将处理程序放在包装器代码中,而不是如果有方法的话
我正在记录一些使用元编程的代码,例如:
template<rysq::type A, rysq::type B, rysq::type C, rysq::type D, class Transform>
struct Kernel<meta::braket<A,B,C,D>, Transform,
typename boost::enable_if<
quadrature<meta::braket<A,B,C,D>, Transform> >::type>
: Eri <Transform> {
Run Code Online (Sandbox Code Playgroud)
使用doxygen记录这种构造的好方法是什么?
我正在尝试使用lazy参数构建一个格式字符串,例如我需要像:
"%s \%s %s" % ('foo', 'bar') # "foo %s bar"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我写了一些几乎相同的函数,除了它们的名字.例如:
; x is name, such as function/paragraph/line/etc.
(defun my-x-function
(interactive)
(mark-x) (do-more-stuff) (modify-x))
Run Code Online (Sandbox Code Playgroud)
有没有办法自动生成这样的功能?我有一种感觉这是宏做的,但我不知道如何使用它们.任何帮助,也许包括一个小例子都会很棒.
谢谢!
我正在研究GPU设备,它具有非常高的除法整数延迟,数百个周期.我希望优化分歧.
分母中的所有除法都在集合{1,3,6,10}中,但分子是运行时正值,大约为32000或更小.由于内存限制,查找表可能不是一个好的选择.
你能想到其他选择吗?我曾想过计算浮点反转,并使用它们来乘以分子.
谢谢
PS.谢谢你们.位移黑客真的很酷.为了从舍入中恢复,我使用以下C段:
// q = m/n
q += (n*(j +1)-1) < m;
Run Code Online (Sandbox Code Playgroud) c++ ×6
emacs ×3
elisp ×2
optimization ×2
templates ×2
backend ×1
c ×1
division ×1
doxygen ×1
exception ×1
frontend ×1
function ×1
indentation ×1
integer ×1
macros ×1
namespaces ×1
performance ×1
python ×1
regex ×1
regex-group ×1