Tag: 标准

弃用静态关键字…不再?

在C ++中,可以在翻译单元中使用static关键字来影响符号的可见性(variables或函数声明)。 在3092年,这是不赞成的: 附件D.2 [depr.static] 在命名空间范围内声明对象时,不推荐使用static关键字(见3.3.6)。 在n3225,这已被删除。 我能find的唯一文章是有些不正式的。 但是为了与C兼容(以及用C ++编译C程序的能力),它的确强调了这一点。 然而,直接编译一个C程序可能是一个令人沮丧的经验,所以我不确定是否值得考虑。 有谁知道它为什么被改变?

没有href属性的锚标签是否安全?

使用锚点标签而不包括href属性是否可以,而是使用JavaScript单击事件处理程序? 所以我会完全省略href ,甚至没有空( href="" )。

我应该在C ++中使用std :: function或函数指针吗?

在C ++中实现一个callback函数时,我还应该使用C样式的函数指针: void (*callbackFunc)(int); 或者我应该使用std :: function: std::function< void(int) > callbackFunc;

我应该在C中使用char ** argv或char * argv 吗?

我只是在学习C,并想知道在我的主要方法中应该使用哪一个。 有什么区别吗? 编辑:那么哪一个更常用?

如何把WebBrowser控件到IE9标准?

我正在使用自动化(即COM自动化)在Internet Explorer(9)中显示一些HTML: ie = CoInternetExplorer.Create; ie.Navigate2("about:blank"); webDocument = ie.Document; webDocument.Write(szSourceHTML); webDocument.Close(); ie.Visible = True; 出现Internet Explorer,显示我的HTML,它的起点为: <!DOCTYPE html> <HTML> <HEAD> … 注意: html5标准模式select的doctype html 除非文件不在ie9标准模式下; 它在ie8标准模式下: 如果我把html保存到我的电脑里: 然后查看那个 html文件,IE是进入标准模式: 我的问题是如何更新我的SpawnIEWithSource(String html)函数将浏览器转换为标准模式? void SpawnIEWithSource(String html) { Variant ie = CoInternetExplorer.Create(); ie.Navigate2("about:blank"); webDocument = ie.Document; webDocument.Write(html); webDocument.Close(); ie.Visible = true; } 编辑:一个更详细,不易理解或可读的代码示例,这不能帮助进一步的问题可能是: IWebBrowser2 ie; CoCreateInstance(CLASS_InternetExplorer, null, CLSCTX_INPROC_SERVER […]

没有参数的构造函数没有括号是语言标准吗?

我正在使用g ++编译一个Cygwin中的C ++程序,而且我有一个构造函数没有参数的类。 我有线: MyClass myObj(); myObj.function1(); 而当试图编译它,我得到的消息: 错误:请求“myObj”中的成员'function1',它是非types的'MyClass()()' 经过一番研究,我发现修正是把第一行改成myClass myObj; 我可以发誓我已经用C ++中的圆括号做了空的构造函数声明。 这可能是我正在使用的编译器的限制还是语言标准真的说不使用不带参数的构造函数括号?

在C ++中recursion到main()是合法的吗?

我读过C ++标准禁止在main()recursion,但g ++编译下面的代码没有抱怨: int main() { main(); } 任何人都可以澄清这一点?

C ++ 17有哪些新特性?

C ++ 17现在function完整,所以不太可能经历大的变化。 针对C ++ 17提出了数百个提案。 在C ++ 17中,哪些function被添加到C ++中? 当使用支持“C ++ 1z”的C ++编译器时,当编译器更新到C ++ 17时,哪些function将可用?

C ++标准究竟如何解引用未初始化的指针是未定义的行为?

到目前为止,我无法find如下推论: int* ptr; *ptr = 0; 是未定义的行为。 首先,5.3.1 / 1表示*表示将T*转换为T*间接方式。 但是这并没有提到UB。 然后经常引用3.7.3.2/4,指出对一个非空指针使用释放函数会使指针无效,而后来无效指针的使用是UB。 但是在上面的代码中,没有关于释放的内容。 如何在上面的代码中推导UB?

为什么标准迭代器范围而不是?

为什么标准将end()定义为一个结束,而不是实际结束?