我通过点击"禁用Maven Nature"为项目禁用了m2eclipse插件,如下图所示.然后Maven条目从菜单中消失,我无法恢复它.

如何恢复/重置/重新启用以便再次显示该条目?
PS 1:我想在不重新导入项目的情况下这样做.
PS 2:我已经看过了${WORKSPACE}/.metadata\.plugins\org.eclipse.m2e.core.ui,${WORKSPACE}/.metadata\.plugins\org.eclipse.m2e.core但似乎没什么关系.
我正在阅读谷歌C++风格指南,并在例外部分感到困惑.根据指南,使用它的一个缺点是:
异常安全需要RAII和不同的编码实践.需要大量的支持机制才能使编写正确的异常安全代码变得容易.此外,为了避免要求读者理解整个调用图,异常安全代码必须将写入持久状态的逻辑隔离到"提交"阶段.这将带来好处和成本(可能是您被迫混淆代码以隔离提交的地方).允许例外将迫使我们总是支付这些费用,即使它们不值得
具体来说,我不明白的陈述是这样的:
(...)异常安全代码必须将写入持久状态的逻辑隔离到"提交"阶段.
还有这个:
(...)也许你被迫混淆代码来隔离提交(...).
我想我不习惯术语"持久状态","提交阶段","混淆代码以隔离提交".关于这些术语的一些小解释,例子或参考可能是很好的,也可能是为什么这是真的.
示例代码:
#include <stdio.h>
int main (){
int *p;
{
int v = 1;
p = &v;
}
printf("%d\n", *p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但我不确定是否保证v的地址将被保留.
我正在使用clang 2.9,从源代码编译,当我尝试编译这样一个简单的代码时:
#include <iostream>
int main (){
std::cout << "Hello\n";
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
/usr/include/c++/4.5/string:39:10: fatal error: 'bits/c++config.h' file not found
Run Code Online (Sandbox Code Playgroud)
当我包括/usr/include/c++/4.5/i686-linux-gnu,我得到
/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find crtbegin.o: No such file or directory
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lgcc_s
/usr/bin/ld: cannot find -lgcc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
由于向量元素是连续存储的,我猜它在一些push_back之后可能没有相同的地址,因为初始分配的空间是不够的.
我正在编写一个代码,我需要对向量中的元素的引用,如:
int main(){
vector<int> v;
v.push_back(1);
int *ptr = &v[0];
for(int i=2; i<100; i++)
v.push_back(i);
cout << *ptr << endl; //?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是ptr包含引用并不一定正确,对v[0]吧?怎样才能保证呢?
我的第一个想法是使用指针向量和动态分配.我想知道是否有更简单的方法吗?
PS.:实际上我使用的是类的向量而不是int,但我认为问题是相同的.
我正在尝试只构建一个boost库的子集.例如,我有这个代码:
TEST.CPP:
#include <boost/thread.hpp>
int main (){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后我做
./bcp --scan test.cpp ~/dev/boost_compact/
Run Code Online (Sandbox Code Playgroud)
因此依赖项文件被复制到~/dev/boost_compact/boost.
然后,按照这个答案,我复制常规boost的根目录下的所有文件以及tools目录并运行
./bootstrap
./bjam
./bjam install
Run Code Online (Sandbox Code Playgroud)
这会将所有标头复制到目标目录,但不会构建/复制库.同样的一系列动作确实有效.我究竟做错了什么?
我正在开发一个使用库来加载配置文件的应用程序:
InputStream in = getClass().getResourceAsStream(resource);
Run Code Online (Sandbox Code Playgroud)
然后我的应用程序打包在一个.jar文件中.如果resource在.jar文件内,我可以指定路径为"/relative/path/to/resource/resource".
我想知道是否有可能找到资源,如果它在.jar文件之外,在这种情况下,我将如何指定路径.
(假设我的应用程序的jar在app/,资源在其中app/config).
该方案采用了3 次党库.该库使用该资源作为配置文件.
我还想调整配置文件,而不必一直解压缩/压缩jar文件.
我刚刚发现,C++/CLI对标准C++的关键字不存在(AFAIK): override.
我对C++/CLI了解不多,所以,有人可以解释它包含在哪个目的,以及它是否是一个被添加到C++的理想功能?
我做了一些测试operator &=.如以下示例所示,这适用于单一bool类型和vector<int>类型,但不适用vector<bool>.
#include <vector>
int main (){
bool a, b;
a &= b; // ok
std::vector<bool> c(1);
c[0] &= b; // error
c[0] = c[0] & b; // ok
std::vector<int> d(1);
d[0] &= b; // ok
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我们这里发生了什么?
(我正在使用gcc 4.4.3)