我想制作一个使用本地命名空间套接字的小程序,我需要使用临时文件名作为套接字的地址.
那么如何在Linux下生成随机文件名呢?
+我在Debian Linux下使用C编程语言.
+根据GNU C库参考,tmpname是不安全的.但安全的tmpfile和mkstemp 创建并打开生成的文件.这里有任何安全和非创建 - 打开.换句话说,该函数应禁止任何其他请求在特定目录下创建生成的文件名.
谢谢.
我正在尝试测试openssl附带的加密库,我从http://www.openssl.org/source/下载了openssl ,它包含一个/ crypto文件夹,其中包含每个加密类型的子文件夹.
我想尝试BIO_f_base64,所以我创建了一个空的控制台应用程序,并添加了所需的包含,还添加了/ bio和/ evp文件夹到c ++ incl目录的路径,还添加了main/openssl文件夹.
当我尝试编译时,我得到无法打开包含文件:'openssl/e_os2.h':没有这样的文件或目录
但文件在那里,我应该以不同的方式使用加密库吗?我如何使用它只添加/ openssl路径而不是我使用的所有加密子文件夹?
此外,我没有任何.lib文件,我在哪里可以得到它们?
的.SelectionMode的DataGridView让你选择所有单元格和行标题,或所有的细胞和列标题,但我无法弄清楚如何让用户选择的一切,包括行标题和列标题在同一时间.
我想让用户能够将整个表格(包括列标题)复制并粘贴到另一个文档中,如文本或格式化文本,如Word或电子邮件.它开箱即用,除了你不能得到列标题.
有没有一种有效的方法将一组nullables(比方说byte?[])复制到一个非nullables数组(比方说byte[]),假设源数组保证没有任何nullables(如果确实如此,可以抛出异常)?显然,我可以遍历索引并单独复制每个元素.
这不起作用.它编译,但ArrayTypeMismatchException在运行时抛出.
byte?[] sourceNullable = new byte?[]{1,2,3};
byte[] destNonNullable = new byte[3];
Array.Copy(sourceNullable,destNonNullable,3);
Run Code Online (Sandbox Code Playgroud)
这会有效但我正在寻找"更好"的东西
for(int i=0;i<3;i++) {
destNonNullable[i] = sourceNullable[i] ?? 0;
}
Run Code Online (Sandbox Code Playgroud)
我愿意接受答案:显式循环有什么问题?你为什么要浪费时间来优化这个?:)
编辑:我尝试使用Linq样式Cast<>(),但事实证明要慢得多.我的代码的时间摘要如下:
for loop = 585 ms
Linq Cast = 3626毫秒
输入image文件是稀疏数组,填充了空值部分.
uint rowsize = 16;
Stopwatch sw = new Stopwatch();
sw.Start();
for (UInt32 address = start & 0xFFFFFFF0; address <= last; address += rowsize)
{
Int32 imageOffset = (Int32)(address - start);
Int32 maxRowLen = (int)rowsize;
if …Run Code Online (Sandbox Code Playgroud) 我想捕获一个异常,但我不知道它的完全限定名称。我想在不通过文档挖掘的情况下通过实验弄清楚。
假设我有这样的代码
try:
blackbox()
except Exception,e:
print str(e)
print e.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
它运行,我收到一条异常消息,上面写着
"error: too big"
error
Run Code Online (Sandbox Code Playgroud)
所以我添加了一个处理程序
try:
blackbox()
except error,e:
pass
except Exception,e:
print str(e)
print e.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为error不在当前命名空间中。(我知道这个特定问题的答案,它恰好是curses.error)。我如何找出异常对象的命名空间(即curses.我可以为该异常添加处理程序?
下面的代码virtual A::foo()用B::foo() override. 如果BROKEN没有定义,那么它编译就好了。我对std::enable<std::is_pod<Q>::value>::type恶作剧的理解是它有效地替换了 SFINAE 表达式void,这应该与普通的void.
但是,它不会编译。我收到编译器错误:
$ make a CXXFLAGS="-std=c++11 -DBROKEN"
icpc -std=c++11 -DBROKEN a.cpp -o a
a.cpp(24): error: object of abstract class type "B<int>" is not allowed:
pure virtual function "A::foo" has no overrider
B<int> b;
^
Run Code Online (Sandbox Code Playgroud)
$ make a CXXFLAGS="-std=c++11 -DBROKEN" CXX=g++
g++ -std=c++11 -DBROKEN a.cpp -o a
a.cpp: In function ‘int main()’:
a.cpp:24:11: error: cannot declare variable ‘b’ to be of abstract …Run Code Online (Sandbox Code Playgroud) 我正在寻找#define以下代码中的便携式一行替代品.替换应该隐藏对象APPLE命名空间中的单词Foo.
class Foo {
public:
#define APPLE 123
Foo(int a) : a_(a) { }
};
// elsewhere in another file
Foo f(APPLE);
Run Code Online (Sandbox Code Playgroud)
我试图使这个更加C++友好,它使用英特尔2017编译器:
class Foo {
public:
static constexpr int APPLE = 123;
Foo(int a) : a_(a) { }
};
// elsewhere
Foo a(Foo::APPLE);
Run Code Online (Sandbox Code Playgroud)
但它不适用于g ++((GCC)6.3.1 20170216),因为它给出了错误
undefined reference to Foo::APPLE
Run Code Online (Sandbox Code Playgroud)
因为它可能试图引用APPLE.
我知道我可以通过在*.cpp文件中创建定义来"解决"问题
constexpr int Foo::APPLE;
Run Code Online (Sandbox Code Playgroud)
但这违反了我#define被1线替换的理想.我的Foo类只是头文件,现在我需要一个cpp文件来定义Foo::APPLE.我知道我也可以将APPLE声明为函数(static constexpr int APPLE() {return …
我问并回答这个问题,以便将来再找到它...
如何让XST不要将两个逻辑上等效的网络合并为一个(这通常是节省资源的好主意,但从时序视图来看可能不是一个好主意)?
我有一个设计有2个计数器,由相同的clk驱动.XST将计数器的最低位合并为一个计数器,但这是一个问题,因为由于IOB放置约束,计数器需要在设计中分开.我需要计数器(特别是计数器的最低位)是不同的.
我想包装一个对std :: thread构造函数的调用(以跟踪所有运行的线程,以便我可以加入它们或做其他事情).在此示例中,t1线程正确构造,但t2线程不使用gcc 4.8.1.但是,在Windows(VS2012)上,它编译时没有错误,并且运行没有错误.基于此处的讨论,这似乎是gcc中的一个错误,但可以说它实际上是VS中的一个错误.这样做的正确方法是什么?
#include <iostream>
#include <thread>
class A {
public:
void foo(int n ) { std::cout << n << std::endl; }
};
template<class F, class Arg>
std::thread& wrapper(F&& f, Arg&& a)
{
std::thread* t = new std::thread(f,a,100);
return *t;
}
int main()
{
A a;
std::thread t1(&A::foo, &a, 100);
t1.join();
std::thread t2 = wrapper(&A::foo, &a);
t2.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误
-bash-4.1$ make
g++ -std=c++11 main.cpp -o main
main.cpp: In function ‘int …Run Code Online (Sandbox Code Playgroud) 我有一些C++代码调用HDF5 C API来写出固定长度的字符串.由于某种原因,结果是总垃圾.以下是h5dump的示例:
DATASET "simple" {
DATATYPE H5T_STRING {
STRSIZE 10;
STRPAD H5T_STR_NULLTERM;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SIMPLE { ( 100 ) / ( 100 ) }
DATA {
(0): "\001\026", "", "\37777777635\177", "", "y\026", "",
(6): "\37777777635\177", "", "\37777777761\026", "",
(10): "\37777777635\177", "", "i\027", "", "\37777777635\177", "",
(16): "\37777777741\027", "", "\37777777635\177", "", "Y\030", "",
(22): "\37777777635\177", "", "\37777777721\030", "",
(26): "\37777777635\177", "", "I\031", "", "\37777777635\177", "",
(32): "\37777777701\031", "", "\37777777635\177", "", "9\032", "",
Run Code Online (Sandbox Code Playgroud)
但是,如果我将大小更改为H5Tset_size (datatype_id, H5T_VARIABLE); …