可能重复:
或者无效C++:为什么这段代码会编译?
你好.
我最近遇到了别人写的不寻常的C++代码:
bool operator != (Point p1, Point p2)
{
return p1.X != p2.X or p1.Y != p2.Y or p1.Z != p2.Z;
};
Run Code Online (Sandbox Code Playgroud)
据我所知or,即使是宏,也没有在任何地方声明.and代码中也很少有.因此,项目不构建在VC2008 Express上.给我代码的人说作者一直在使用mingw编译器.
问题:这是一个非标准的编译器功能(我怀疑它),这是新的C++标准的一部分(我没有看过C++ 0x),或者这是程序员的问题(如果这个人搬家了)来自pascal,他可能一直在使用和/或代替&&/ ||因为习惯,或者因为他认为它更"可读".
我一直以为代码如下
std::map<int, int> test;
std::cout << test[0] << std::endl;
Run Code Online (Sandbox Code Playgroud)
会打印随机值,因为它会在map中创建单位化值.但是,事实证明,创建的int实际上总是初始化为零,并且标准内置类型在某些情况下也是零初始化的.
问题是:当对标准类型(int/char/float/double/size_t)执行零初始化时?我很确定,如果我int i;在不知名的地方宣布,它将包含随机数据.
PS问题是关于C++ 03标准.问题的原因是,现在我不再确定何时必须为内置类型(如int/float/size_t)提供初始化,或者可以安全地省略它.
我正在将一些晦涩的库从自动工具移植到cmake。
有问题的库将编译自定义工具,该工具将标头输出到stdout,此标头稍后将在项目中使用。
我该如何移植到cmake?
我可以使用编译“ header generator”
add_executable(generator generator.c)
Run Code Online (Sandbox Code Playgroud)
但是如何运行它并使用cmake将其输出重定向到头文件?我当然也需要依赖项处理...(即,如果generator.c更改了,必须重新编译generator并且必须重新生成标头)。
最近我经常遇到需要类似于这种数据结构的情况.
限制:C++ 03标准.
+-----+--------------+ +----+
|node0| NodeDataRef ->-------------->|data|
+-----+--------------+ +----+
+-----+--------------+ ^^ ^
|node1| NodeDataRef ->----------------+| |
+-----+--------------+ | |
+-----+--------------+ | |
|node2| NodeDataRef ->-----------------+ |
+-----+--------------+ |
|
+-----+--------------+ |
|root | RootDataRef ->-------------------+
+-----+--------------+
Run Code Online (Sandbox Code Playgroud)
Node类,其中每个Node拥有NodeDataRef"参考"(认为shared_ptr)以"同一个实例Data"(类,结构,不管是谁-动态分配). Root"或"主"节点/类,它将RootDataRef引用(这次,思考weak_ptr)保存到相同的" Data".Nodes都被销毁时,data也会被破坏并RootDataRef设置为0/ NULL.即NodeDataRef行为shared_ptr<Data>和RootDataRef行为一样weak_ptr<Data>NodeDataRefs,根节点也可以强制销毁数据.在这种情况下 …在Visual Studio C ++ 2013 Express中,似乎除非utf8编码的文件带有BOM标记,否则编译器无法理解所编译的文件采用UTF8编码,并将其视为本机编码。但是,代码编辑器没有此问题。
warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss
Run Code Online (Sandbox Code Playgroud)
有解决此问题的方法吗?我记得在所有Visual Studio版本中这都是常见的问题,但是我不记得曾经见过修复程序。我不能一直给所有不是我的文件添加Bom标记,尤其是如果源代码保存在代码存储库中时。
在Unity 5中,管理动态创建的游戏对象的"干净"方式是什么?
我写了一个MonoBehavior创建/销毁几个的组件()GameObjects.对象作为自定义自定义系统的一部分加载,选择部分字符 - 头发/衣服等.这意味着它们对于播放器是可见的,在编辑器中可见,但不应该在编辑器中可编辑.正在加载的对象是带有骨架的网格.
脚本以这种方式运行:
删除:
protected void unloadLastResource(){
if (lastResourceInstance){
if (Application.isEditor){
GameObject.DestroyImmediate(lastResourceInstance);
}
else
GameObject.Destroy(lastResourceInstance);
Resources.UnloadUnusedAssets();
lastResourceInstance = null;
}
}
Run Code Online (Sandbox Code Playgroud)
创建:
GameObject target = getEffectiveTargetNode();
Object resource = Resources.Load(newResourceName);
instance = Instantiate(resource) as GameObject;
instance.hideFlags = HideFlags.HideAndDontSave;
instance.transform.parent = target.transform;
instance.transform.localPosition = Vector3.zero;
instance.transform.localRotation = Quaternion.identity;
instance.transform.localScale = Vector3.one;
Run Code Online (Sandbox Code Playgroud)
销毁处理程序:
void OnDestroy(){
unloadLastResource();
}
Run Code Online (Sandbox Code Playgroud)
这似乎在编辑器中工作正常,但是当我从游戏模式切换回edito模式时,我收到很多警告:
Destroying object multiple times. Don't use DestroyImmediate on the same object in OnDisable or …Run Code Online (Sandbox Code Playgroud) 以下代码编译并适用于G ++ 4.4.0和MS VC2008 Express.
#include <iostream>
template<typename T> struct A{
protected:
T v;
public:
const T get() const{
return v;
}
A(T v_)
:v(v_){
}
};
class B: public A<const int*>{
public:
void doSomething() const{
const int* tmp = get();
std::cout << *tmp << std::endl;
}
B(const int* p)
:A<const int*>(p){
}
};
int main(int argc, char** argv){
int a = 134;
B b(&a);
const B& c = b;
b.doSomething();
c.doSomething();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,据我所知,它的使用A<const int*>应该导致const …
我需要一个将多个值连接到(简单)向量中的函数,类似于(concatenate )。但是,与串联不同,它应该能够处理不是向量或序列的参数。
即它应该像这样工作:
(concat #(1 2) 3) => #(1 2 3)
(concat 1 2 3) => #(1 2 3)
(concat 1 #(2 3 4)) => #(1 2 3 4)
(concat #(1 2) 2 #(3 4 5)) => #(1 2 3 4 5)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我想我忘记了一些琐碎的lisp构造,使之成为可能。
据我所知,串联无法做到。而且我不太确定如何将它与宏配合使用(有,@将列表插入最终的Lisp形式的构造,但是在这种情况下,我不确定如何区分非序列和序列)。
我正在寻找一种在 C++ 程序中使用的快速非对称密码算法。我们的应用程序访问存储在存档中的只读数据(自定义格式,有点类似于 tar),我想通过非对称加密存档索引来防止对该存档进行任何修改(我知道这不是一个完美的解决方案,并且仍然可以使用某些技术提取和重新打包数据)。
存档中的一些单个文件使用对称密码进行加密,并且它们的加密密钥存储在存档索引(标头)中。这就是为什么我想对存档头进行非对称加密。
Cypher 要求:
1)算法实现应该是平台无关的。
2) 算法应该易于自己实现,或者应该在允许与专有应用程序静态链接的库(带有源代码)中提供,这意味着不能使用 GPL/LGPL/病毒许可证。MIT/BSD 许可的代码或公共域代码是可接受的。
3)如果库中提供了 cypher,理想情况下它应该具有较小的内存占用,并且实现应该是紧凑的。我更愿意使用仅实现一种密码的 C/C++ 库,而不是成熟的通用密码集合。
本来我想使用RSA,但看起来它太慢了,没有什么用处,而且没有太多替代方案。
那么,对于我可以使用什么有什么建议吗?
我正在寻找一种在QGLWidget上绘制3D文本的简单方法,而不使用FTGL,FreeType,"渲染到纹理"或帧缓冲对象,即仅使用文档化的Qt 4函数,不需要额外的库.
想法?
PS"3D文字"意味着字母是平的并且厚度为零,但可以在3D空间中旋转.想想"星球大战开放爬行" - 位于3D空间的扁平字母.另外,我已经知道我可以编写我的文本渲染类,它将字形渲染到纹理等等.我正在寻找一种简单的方法来使用标准的Qt 4函数做同样的事情.例如,QPainter可能在内部访问所有必需的数据.
你好,祝你好运.
需要一点帮助:
情况:
我有一个模糊的DirectX 9应用程序(名称和应用程序的详细信息与问题无关),导致所有nvidia显卡(GeForce 8400GS及以上版本)的蓝屏死机,因为某些驱动程序版本.我认为问题是由DirectX 9调用或触发驱动程序错误的标志间接引起的.
目标:
我想通过编写代理dll来追踪违规的标记/函数调用(为了好玩,这不是我的工作/作业)并绕过错误条件.我已经有一个完成的代理dll,它为IDirect3D9,IDirect3DDevice9,IDirect3DVertexBuffer9和IDirect3DIndexBuffer9提供包装器,并提供Direct3D调用的基本日志记录/跟踪.但是,我无法确定导致崩溃的功能.
问题:
sendto)也会导致显着减速,并且不能异步完成(异步数据包在BSOD上丢失),即使同步发送,数据包(崩溃周围的数据包)有时也会丢失.问题:
我通常不会编写驱动程序,也不会进行这种级别的调试,所以我觉得我缺少一些重要的东西,比使用自定义日志记录机制编写IDirect3DDevice9代理dll有更简单的方法来追踪问题.它是什么?诊断/处理/修复问题的标准方法是什么(没有源代码,COM接口方法触发BSOD)?
Minidump分析(WinDBG):
Loading User Symbols Loading unloaded module list ........... Unable to load image nv4_disp.dll, Win32 error 0n2 *** WARNING: Unable to verify timestamp for nv4_disp.dll *** ERROR: Module load completed but symbols could not be loaded for nv4_disp.dll ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* Use !analyze -v to get …
考虑这种情况.
struct Color(由别人写)enum ColorCode一个实现html命名的颜色代码.ColorCode为的静态函数Color我希望能够这样做:
Color tmp = ....;
tmp = ColorCode.Aqua;
Run Code Online (Sandbox Code Playgroud)如何在没有复制粘贴文本140次的情况下执行此操作?
ColorCode只要上面的行有效,我真的不在乎(枚举,类,等等).
问题:
C#不允许我为枚举定义运算符.我也没有任何宏来制作一些很好的人类可读表格ColorCode.
限制:
内容ColorCode应该是ints,但应该是可分配/可兑换的Color.
代码片段:
public enum ColorCode{
AliceBlue = 0xF0F8FF,
AntiqueWhite = 0xFAEBD7,
Aqua = 0x00FFFF,
Aquamarine = 0x7FFFD4,
Azure = 0xF0FFFF, ///Repeat 140 times
...
}
public static Color colorFromCode(ColorCode code){
....
}
Run Code Online (Sandbox Code Playgroud)
有人注册了一些dot com域并指向127.0.0.1.像myserver.com这样的东西.
我在一个stackoverflow问题的答案中看到了这一点 - 但域的名称完全逃脱了我.谁能记得那个域名?