我正在尝试了解strings,但不同的来源告诉我要包含不同的标题.
有人说使用<string.h>,但其他人提到"apstring.h".我能够做一些基本的东西apstring,但我被告知另一个更强大.但是当我包含<string.h>并尝试声明一些字符串变量时,我会收到错误.适当的用法是什么?
在LearnCpp.com上| 1.10 - 首先看一下预处理器.在Header guards下,有一些代码片段:
add.h:
#include "mymath.h"
int add(int x, int y);
Run Code Online (Sandbox Code Playgroud)
subtract.h:
#include "mymath.h"
int subtract(int x, int y);
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include "add.h"
#include "subtract.h"
Run Code Online (Sandbox Code Playgroud)
在实施头部防护时,提到如下:
#ifndef ADD_H
#define ADD_H
// your declarations here
#endif
Run Code Online (Sandbox Code Playgroud)
int main()来#endif吗?_H约定还是必须做的事情?谢谢.
我开始使用CUDA进行编程,在某些示例中,我找到了包含文件cuda.h,cuda_runtime.h并cuda_runtime_api.h包含在代码中.有人可以向我解释这些文件之间的区别吗?
我在Windows 7工作站上安装了Visual Studio 2010 Premium.加载测试C++项目后,我注意到它找不到iostream.我看了一下C:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\include,注意到这里只存在两个文件,srv.h和wmiatlprov.h
我在测试虚拟机上安装了VS2010产品,这个目录(...\VC\include)中填充了通常的文件夹和标题集(您希望在包含目录中找到的材料).
我已采取以下步骤来纠正问题工作站上缺少的标头:
我也完成了上述步骤,但使用了不同版本的重新安装VS2010 Professional.
到目前为止,上述任何内容都无法生成已安装的Visual Studio 2010产品,并且我的工作站上安装了所有C++标头.
想法?
installation windows-installer header-files visual-studio-2010 visual-c++
我可以在类.h文件或实现文件.cpp中定义类构造函数的主体.就编译器在特定项目中而言,这两种样式可能是相同的(项目对我来说意味着DLL).同样适用于任何成员函数:它们可以在头文件中定义,也可以在那里声明,然后在cpp文件中定义.
但是,我发现,如果我需要包括在不同的项目,例如类的头文件(一个或多个)(这意味着最终使用该头文件中的代码不同的最终DLL),则具有在头文件中的实际的实现会导致一些头痛在编译时(不是在链接...我甚至没有达到这一点).为什么?好吧,我不会详细说明,但编译器显然试图解决其他头文件等中可能定义的所有函数,迫使可怜的开发人员开始引入各种头文件等.
是不是总是最好保持头文件没有任何实现,只是将它们用于'声明'?这样可以更容易地将它们包含在多个项目中,而不必携带大量额外的垃圾.
你对此有何看法?
我有一个B类,我想把成员称为A类.所以:
1.
//A.h
class B;
class A
{
private:
B* m_p;
};
//a.cpp
#include "B.h"
Run Code Online (Sandbox Code Playgroud)
2.
// A.h
#include "B.h"
class A
{
private:
B * impl_;
};
Run Code Online (Sandbox Code Playgroud)
当一个没有太多依赖性的小项目涉及时,这两种方式是否更好?
这是我的.pch文件 -
//
// Prefix header for all source files of the 'English Club' target in the 'English Club' project
//
#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "Helper.h"
#import "Animations.h"
#import "Constants.h"
#import "SoundPlayer.h"
#import "UAirship.h"
#import "UAStoreFront.h"
#import "UIIMagesNames.h"
#import "UIView+Sizes.h"
#import "HelpButton.h"
#import "SoundPlayer.h"
#import <RestKit/RestKit.h>
#import "UIHelpSoundFiles.h"
#endif
Run Code Online (Sandbox Code Playgroud)
仍然很常见,Xcode会给我错误,他找不到那些类.(例如帮助者).问题是该项目将被编译并且工作正常,但是我有数百个错误,这些错误会扰乱我寻找真实的错误.
知道为什么吗?
我正在查看一些代码,他们有这一行:#define WINVER 0x0501在stdafx.h文件中?你为什么需要定义WINVER?它如何影响您的代码?有人可以解释一下吗?
关于C/C++包含文件顺序/最佳实践的问题,最佳答案建议首先包含相关标题.
但是,在这两种情况下,我找不到你为什么要这样做的充分理由.
Google和Mozilla编码规则对我来说最合适,因为它们会强制您首先包含最"标准"的标头.
这样,我认为你不太可能弄乱包含的文件(例如通过取消定义其他标题中使用的一些宏等),这看起来像是最适合我的方式.
但是根据这个理由,为什么要首先包含相关的标题?由于它中的任何语法错误可能会弄乱以下所有标题?
我认为包括最后的相关标题将是最好的.
我知道这是一个常见问题,但我仍然无法完全理解它.
在从多个不同的源文件和头文件生成的C或C++程序中,当使用标题保护时,每个头文件是否只包含在整个代码中一次?
之前有人告诉我,头文件(带有包含警卫)只能在一个翻译单元中包含一次,但在整个代码中会多次包含.这是真的?
如果它在整个代码中只被包含一次,当一个文件希望包含它并且预处理器检测到它已经被包含时,那个希望使用它的文件如何知道它之前包含的代码中的位置?
header-files ×10
c++ ×7
c ×2
constructor ×1
cuda ×1
header ×1
installation ×1
macros ×1
objective-c ×1
string ×1
visual-c++ ×1
windows ×1