我正在尝试将软件安装到特定目录.我找到了几种方法,但不确定它们之间有什么区别.
./configure --prefix=***
make install DESTDIR=***
make install prefix=***
./configure --prefix=***
我对这四个的功能感到困惑.他们实现了同样的目标吗?
嗨,我正在尝试使用std::thread
G ++.这是我的测试代码
#include <thread>
#include <iostream>
int main(int, char **){
std::thread tt([](){ std::cout<<"Thread!"<<std::endl; });
tt.join();
}
Run Code Online (Sandbox Code Playgroud)
它编译,但当我尝试运行它时,结果是:
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Aborted
Run Code Online (Sandbox Code Playgroud)
我的编译器版本:
$ g++ --version
g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Run Code Online (Sandbox Code Playgroud)
我的测试代码出了什么问题?
更新:我使用以下命令行来编译和运行我的代码.
$ g++ -std=c++0x test.cpp
$ ./a.out
Run Code Online (Sandbox Code Playgroud)
我试过 …
考虑这个奇怪的程序:
int main()
{
int(*){} Is it C++14 or any other language?
}
Run Code Online (Sandbox Code Playgroud)
即使//
缺少注释,即使我-pedantic-errors
在g ++ 6.0中使用选项,代码编译也没有任何错误和警告.这对我来说似乎是一个编译器错误.它真的是编译器中的错误吗?
我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义
背景是:
def fn(*args):
return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)
我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?
10 and 7-2
Run Code Online (Sandbox Code Playgroud)
返回5.同样,更改和将导致或将导致功能更改.所以
10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)
会回来10.
这是合法/可靠的风格,还是有任何问题?
是否可以为列表理解中的每个项目返回2个(或更多)项目?
我想要的(例子):
[f(x), g(x) for x in range(n)]
Run Code Online (Sandbox Code Playgroud)
应该回来 [f(0), g(0), f(1), g(1), ..., f(n-1), g(n-1)]
所以,要替换这段代码:
result = list()
for x in range(n):
result.add(f(x))
result.add(g(x))
Run Code Online (Sandbox Code Playgroud) 假设你有一个数组:
int array[SIZE];
Run Code Online (Sandbox Code Playgroud)
或者
int *array = new(int[SIZE]);
Run Code Online (Sandbox Code Playgroud)
C 或 C++ 是否保证array < array + SIZE
,如果是,在哪里?
我知道无论语言规范如何,许多操作系统通过为内核保留虚拟地址空间的顶部来保证此属性。我的问题是语言是否也保证了这一点,而不仅仅是绝大多数实现。
举个例子,假设一个操作系统内核处于低内存中,有时会向用户进程提供虚拟内存的最高页面,以响应mmap
对匿名内存的请求。如果malloc
或::operator new[]
直接要求mmap
分配一个巨大的数组,并且数组的末尾紧靠虚拟地址空间的顶部,从而array + SIZE
环绕为零,这是否等于该语言的不合规实现?
澄清
请注意,问题不是问 about array+(SIZE-1)
,它是数组最后一个元素的地址。那一个保证大于array
。问题是关于超过数组末尾的指针,或者p+1
何时p
是指向非数组对象的指针(所选答案指向的标准部分明确表示以相同方式处理)。
计算器要我解释,为什么这个问题是不一样的这一个。另一个问题询问如何实现指针的总排序。另一个问题本质上归结为一个库如何实现std::less
它甚至可以用于指向不同分配对象的指针,标准说只能比较相等,而不是大于和小于。
相比之下,我的问题是关于数组末尾的一个是否总是保证大于数组。我的问题的答案是或否实际上并没有改变你将如何实施std::less
,所以另一个问题似乎并不相关。如果与数组末尾的比较是非法的,那么std::less
在这种情况下可能只是表现出未定义的行为。(此外,通常标准库是由与编译器相同的人实现的,因此可以自由利用特定编译器的属性。)
使用C++ 14标准,std::array
可以使用单个括号进行初始化(请参阅http://en.cppreference.com/w/cpp/container/array):
然而,这并没有为工作std::array
的std::pair
.
为什么这些工作:
std::pair<int, int> p { 1, 2 };
std::array<int, 3> a {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但是这不工作:
std::array<std::pair<int, int>, 3> b {{1, 11}, {2, 22}, {3, 33}};
Run Code Online (Sandbox Code Playgroud)
虽然这确实有效吗?
std::array<std::pair<int, int>, 3> b {{{1, 11}, {2, 22}, {3, 33}}};
Run Code Online (Sandbox Code Playgroud)
此外,为了完成,一个好的旧数组的初始化确实适用于单个大括号
std::pair<int, int> c[3] {{1, 11}, {2, 22}, {3, 33}};
Run Code Online (Sandbox Code Playgroud) 对于一个scanner对象,该hasNextLine()
方法返回false时该hasNext()
方法返回true是怎么回事?
注意:根据输入文件,该hasNext()
方法将按预期返回结果; 在hasNextLine()
似乎没有被返回正确的结果.
这是我正在运行的代码,它创建了以下结果:
public void ScannerTest(Reader fileReaderObject){
Scanner scannerObj = new Scanner(fileReaderObject);
for(int i = 1; scannerObj.hasNext(); i++){
System.out.println(i + ": " + scannerObj.next());
System.out.println("Has next line: " + scannerObj.hasNextLine());
System.out.println("Has next: " + scannerObj.hasNext());
}
System.out.println();
scannerObj.close();
}
Run Code Online (Sandbox Code Playgroud)
以下是我传递给此扫描器的文件的实际内容:
a 3 9
b 3 6
c 3 3
d 2 8
e 2 5
f 2 2
g 1 7
h 1 4
i 1 1
Run Code Online (Sandbox Code Playgroud)
我想知道为什么这种代码可以得到测试数组的大小?我对模板中的语法不熟悉。也许有人可以解释下代码的含义template<typename,size_t>
。此外,参考链接也是首选。
#define dimof(array) (sizeof(DimofSizeHelper(array)))
template <typename T, size_t N>
char(&DimofSizeHelper(T(&array)[N]))[N];
void InitDynCalls()
{
char test[20];
size_t n = dimof(test);
printf("%d", n);
}
Run Code Online (Sandbox Code Playgroud)