小编JVD*_*JVD的帖子

(v)实际上是(*&v),因为什么时候?

C++标准专家可以赐教我:

由于哪个C++标准版本有这个语句失败,因为(v)似乎相当于(*&v)

即代码:

 #define DEC(V) ( ((V)>0)? ((V)-=1) : 0 )
 ...{...
        register int v=1;
        int r = DEC(v) ;
 ...}...
Run Code Online (Sandbox Code Playgroud)

这现在产生如下警告-std=c++17:

不能取寄存器变量的地址

操作数的左侧必须是左值

许多C宏将括号中的所有宏参数括起来,其中上述仅仅是代表性示例.

产生警告的实际宏是例如中的RTA_*/usr/include/linux/rtnetlink.h.

如果没有在C++中使用/重新定义这些宏,是否有任何解决方法?

c++ c++11 c++14 c++17

17
推荐指数
3
解决办法
3559
查看次数

如何从网络服务器为FF和IE安装SSL客户端证书?

登录后,我希望一个网页能够为firefox和MSIE-8 +网站客户端提供下载和安装网站的唯一SSL客户端证书的能力,这样他们就不需要再次从该计算机登录.

后端很简单并且完成了 - 我的linux web服务器上有一个目录,输入"make USER = $ username $ {username} .crt.pkcs12"将创建一个新的客户端密钥和一个有效的签名PKCS-12 SSL客户端证书文件.

但是如何最好地提供一种方法,即登录(使用密码)MSIE和firefox用户都可以下载这些证书并打开"安装客户端证书"浏览器GUI对话框?

简单地将证书作为mime-type文件推送是很简单的? - 说'application/x-pkcs7-certreqresp'?? 所以提示用户保存文件; 但我希望他们被提示将此网站的证书添加到SSL证书管理器的客户端证书库. 然后我发现这个为firefox.

所以这是相当简单的,
但我能为MSIE找到的就是这个.

因此从javascript调用firefox'x安全管理器API很简单,但我无法从MSIE的javascript中找到这样做 - 需要调用.NET C#代码来访问.NET API,而X509Store API似乎不是要导出到MSIE javascript.

在我看来,选项是在我的linux网络服务器上提供单声道.NET Web服务,并将来自MSIE客户端的请求重定向到该服务的证书,然后可以下载客户端运行的.NET代码来安装证书?

或者我可以让MSIE客户端下载一个运行"WinHttpCertCfg.exe"的"Install_Cert.VB"可视化基本脚本?

或者是否有一些神奇的MSIE安全管理器javascript API,我只是没有找到?

对不起,自1992年以来我一直是一个Windows refusnik; 我只使用Linux/Solaris/BSD/MacOS,无法访问Windows机器.

有没有人来过这里/有任何建议吗?如果是这样,我将不胜感激!杰森先生,谢谢你

.net javascript ssl firefox internet-explorer

10
推荐指数
1
解决办法
9658
查看次数

非类型模板参数:如何传递对基类对象的引用?

似乎不可能将对派生对象的基类对象的引用作为模板参数传递,正如我在这里尝试的那样:

struct a
{ int _v;
  constexpr a():_v(0){}
  constexpr a(int v): _v(v){} 
};

struct c: public a
{ constexpr c():a(){}
  constexpr c(int v):a(v){} 
};

extern const c default_a;

constexpr const c default_a { 1 };

const a& c_as_a = default_a;
//    ^-- this line (16) causes no error - c can be converted to a

template < const a & The_A = default_a >
struct b
{ constexpr static const a &the_a = The_A;
};

b<> a_b;

// Template instantiation …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
535
查看次数

为什么除非最派生的基类显式调用它们,否则不调用虚拟基类非默认构造函数?

我想了解为什么 C++ 标准要求虚拟基非默认构造函数不能由中间非最派生类调用,如这段代码中所示,当使用 '-D_WITH_BUG_' 编译时:

/*  A virtual base's non-default constructor is NOT called UNLESS 
 *  the MOST DERIVED class explicitly invokes it
 */

#include <type_traits>
#include <string>
#include <iostream>

class A
{
public:
    int _a;
    A():  _a(1)
    {
        std::cerr << "A() - me: " << ((void*)this) << std::endl;
    }
    A(int a): _a(a)
    {
        std::cerr << "A(a) - me:" << ((void*)this) << std::endl;
    }
    virtual ~A()
    {
        std::cerr << "~A" << ((void*)this) << std::endl;
    }
};

class B: public virtual …
Run Code Online (Sandbox Code Playgroud)

c++ constructor virtual-inheritance ctor-initializer c++17

5
推荐指数
1
解决办法
617
查看次数