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++中使用/重新定义这些宏,是否有任何解决方法?
登录后,我希望一个网页能够为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.
因此从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机器.
有没有人来过这里/有任何建议吗?如果是这样,我将不胜感激!杰森先生,谢谢你
似乎不可能将对派生对象的基类对象的引用作为模板参数传递,正如我在这里尝试的那样:
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++ 标准要求虚拟基非默认构造函数不能由中间非最派生类调用,如这段代码中所示,当使用 '-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)