传统上,避免在C ++中使用多头包含的标准和可移植的方法是使用#ifndef – #define – #endif预编译器指令scheme,也称为macros保护scheme (参见下面的代码片段)。 #ifndef MY_HEADER_HPP #define MY_HEADER_HPP … #endif 然而,在大多数的实现/编译器中(见下图),还有一个更为“优雅”的select,与macros观保护机制#pragma once有相同的作用。 与macros保护scheme相比, #pragma once有过几个优点,包括代码less,避免了名称冲突,有时也提高了编译速度。 做了一些研究,我意识到尽pipe#pragma once指令几乎被所有已知的编译器支持,但是#pragma once指令是否是C ++ 11标准的一部分, #pragma once是否是混淆的。 问题: 有人能澄清一下, #pragma once指令是否是C ++ 11标准的一部分? 如果它不是C ++ 11标准的一部分,是否有计划在更新的版本上包含它(例如,C ++ 14或更高版本)? 如果有人能够进一步阐述使用其中一种技术(例如,macros观防范与#pragma once )的优点/缺点,那也不错。
我正在为C ++寻找一个好的Windows GUI库。 我认为理想的特点是: 现代 。 MFC,wxWidgets,Qt很久以前就开始了,他们没有使用现代的C ++特性和标准库。 有一个丰富的控制与体面的function。 几乎在任何地方放置HTML的能力都是我喜欢wxWidgets的快乐,当我不讨厌它的时候。 开源 。 这是必须的。 如果购买之后有来源可用,那么它被认为是好的。 有一个表单devise器在某种程度上 。 是的,这将是伟大的。 经过多年与delphi的合作,每次我必须手工指定控制尺寸时,我都会哭泣。 免费用于商业用途 。 但是,如果一些图书馆真的很好,那么我会考虑购买它。 跨平台 。 这个规范只是一个决胜盘☺。 我可以没有这个生活。 请提出你的想法为候选人。 每个答案请一个图书馆。
我正在寻找创build两个类,其中每个包含其他类types的对象。 我该怎么做? 如果我不能做到这一点,是否有一个解决方法,像每个类包含一个指向其他类types的指针 ? 谢谢! 这是我有: 文件: bar.h #ifndef BAR_H #define BAR_H #include "foo.h" class bar { public: foo getFoo(); protected: foo f; }; #endif 文件: foo.h #ifndef FOO_H #define FOO_H #include "bar.h" class foo { public: bar getBar(); protected: bar b; }; #endif 文件: main.cpp #include "foo.h" #include "bar.h" int main (int argc, char […]
我一直使用一个*.h文件作为我的类定义,但是在阅读了一些boost库代码后,我意识到它们都使用*.hpp 。 我总是厌恶这个文件扩展名,我想主要是因为我不习惯。 使用*.hpp不是*.h的优点和缺点是什么?
我在Windows 7工作站上安装了Visual Studio 2010 Premium。 加载一个testingC ++项目后,我注意到它无法findiostream。 我看了一下C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ include ,注意到这里只有两个文件,srv.h和wmiatlprov.h 我在一个testing虚拟机上安装了VS2010产品,并且这个目录( … \ VC \ include )中包含了通常的文件夹和头文件(您期望在includes目录中find的材料)。 我已采取以下步骤纠正问题工作站上缺less的标题: validation我没有A / V软件活动(我正在使用MS Security Essentials,实时function被禁用) 从程序和function中卸载Visual Studio 2010 Premium和所有其他子产品 使用/ full和/ netfx参数运行VS2010卸载工具 从程序文件和程序文件(x86)中删除Visual Studio 10.0目录 从MSDN新鲜下载的ISO重新安装Visual Studio 2010。 我也完成了上述步骤,但使用了不同版本的重装VS2010 Professional。 到目前为止,上面没有任何东西能够生成已安装的Visual Studio 2010产品,并在工作站上安装了所有的C ++头文件。 想法?
我用这种方式创build了一个JAR文件jar cf jar-file input-files 。 现在,我试图运行它。 运行它不起作用(找不到jre命令): jre -cp app.jar MainClass 这也不起作用: java -jar main.jar (无法从main.jar加载Main-Class清单属性)。 我也发现了 要运行打包为JAR文件的应用程序(1.2版 – 需要Main-Class清单头文件) 什么是“主要类清单标题”? 我如何创build它,我在哪里放?
当我尝试在WebRequest对象上添加HTTP标头键/值对时,出现以下exception: 这个头文件必须使用相应的属性进行修改 我已经尝试使用Add()方法向Headers集合中添加新的值,但我仍然得到相同的exception。 webRequest.Headers.Add(HttpRequestHeader.Referer, "http://stackoverflow.com"); 我可以通过将WebRequest对象强制转换为HttpWebRequest并设置诸如httpWebReq.Referer ="http://stackoverflow.com"的属性来解决这个问题,但是这只适用于通过属性暴露的less数头文件。 我想知道是否有办法获得一个更好的粒度控制修改标题与远程资源的请求。
我有下面的makefile,我用它来构build一个正在处理的程序(实际上是一个内核)。 它从零开始,我正在学习这个过程,所以它不是完美的,但是我认为在这个阶段我已经足够强大,可以编写makefile了。 AS = nasm CC = gcc LD = ld TARGET = core BUILD = build SOURCES = source INCLUDE = include ASM = assembly VPATH = $(SOURCES) CFLAGS = -Wall -O -fstrength-reduce -fomit-frame-pointer -finline-functions \ -nostdinc -fno-builtin -I $(INCLUDE) ASFLAGS = -f elf #CFILES = core.c consoleio.c system.c CFILES = $(foreach dir,$(SOURCES),$(notdir $(wildcard […]
我在哪里可以findC和C ++中所有头文件的列表? 当我build立一个图书馆,我得到一个错误,如“ tree.h not found ”。 我想这是C和C ++中的标准头文件。 这引起了我对所有头文件及其贡献的好奇心。 有没有可以search的地方? 我正在Solaris Unix上工作。
我从cstdio的c ++参考中看到这一行: 库中的每个元素都在std namespace定义。 但我试过的代码: std::printf("hello world"); printf("hello world"); C ++头文件是否将名称放在std和全局名称空间中是真的吗?