小编fra*_*ji1的帖子

为什么它被称为'wchar_t'而不仅仅是'wchar'?

我经常想知道为什么C++的名字wchar_t不是简单的wchar,而且我从来没有找到答案.搜索引擎没有帮助,因为他们认为我在询问Windows的WCHAR类型.有任何想法吗?

c c++ terminology

24
推荐指数
3
解决办法
2204
查看次数

如何在VS2008中指定64位无符号int const 0x8000000000000000?

我读了关于整数常量的Microsoft特定后缀"i64".我想做一个UNSLigned转到ULONGLONG.
ULONGLONG bigNum64 = 0x800000000000000i64 >> myval;

在正常的C中,我会使用后缀"U",例如类似的32位操作
ULONG bigNum32 = 0x80000000U >> myval;

我不希望2的补码符号扩展通过高位传播.我想在64位常数上进行UNSIGNED转换.我认为我的第一个声明是要做一个SIGNED右移.

我试过0x800000000000000i64U,0x800000000000000u64但有编译器错误.

c c++ visual-studio

23
推荐指数
2
解决办法
3万
查看次数

如何在Visual Studio 2008的绘图编辑器中将像素设置为.GIF或.PNG文件中的透明?

我的图形艺术家给了我一个.PNG文件,然后是.GIF文件.保存时,透明背景像素实际上设置为白色像素.曾经有一段时间我认为VS可以用调色板上的这个小粉红色/三文鱼复古电视图标做透明色,但它不再出现了.

有人有什么想法吗?

png gif visual-studio-2008 visual-studio

9
推荐指数
3
解决办法
2万
查看次数

我可以在C++中"转发声明"什么?

我知道我能做到

class Foo;
Run Code Online (Sandbox Code Playgroud)

可能

struct Bar;
Run Code Online (Sandbox Code Playgroud)

和全球职能

bool IsValid(int iVal);
Run Code Online (Sandbox Code Playgroud)

键入的枚举怎么样?在未申报的课程中输入的枚举怎么样?具有未声明的类的函数怎么样?那个未申报的课程中的静态成员怎么样?在未知的命名空间中这些怎么办?我错过了任何可以向前宣布的东西吗?

c++ forward-declaration

8
推荐指数
1
解决办法
3274
查看次数

有没有办法标记(在编译时)签名与基本签名不匹配的"重写"方法?

基本上,我想override在我的C++代码中使用其关键字的C#编译器功能.

class Base
{
   virtual int foo(int) const;
};

class Derived : public Base
{
   virtual int foo(int); // wanted to override Base, but forgot to declare it const
};
Run Code Online (Sandbox Code Playgroud)

众所周知,上面的代码编译得很好,但会产生一些奇怪的运行时行为.我希望我的C++编译器可以用C#的override关键字来捕获我糟糕的实现.是否有任何像"覆盖"这样的关键字被引入到C++中,或者我们是否坚持#define override virtual用来展示我们的意图?(实际上,我不这样做 - 我讨厌使用预处理器来"扩展"语言).

c++ virtual overriding

7
推荐指数
1
解决办法
188
查看次数

如何摆脱C++中的-0

我正在编写一个程序,其中有一些操作正在浮点数上执行.在我调试程序之后,我开始知道对于特定的测试用例,该值的值variable equals -2.38418579e-07.现在我将cout精度设置为小数点后的2位数.因此,当我打印它时,它打印为-0.00.

但是,我希望输出为0.00而不是-0.00.我已经尝试if了变量值的各种条件.但是,他们没有帮助.任何人都可以建议如何在C++中摆脱-0.00

c++ floating-point

6
推荐指数
1
解决办法
385
查看次数

为什么C++预处理器没有对枚举值进行正确的算术运算?

以下代码不生成#error,而是编译,运行并输出跟踪值37(TT_LAST_PARM等于53,TT_FIRST_PARM等于16):

#if ((TT_LAST_PARM - TT_FIRST_PARM) >= 32)
#error More than 32 parm tokens
#else
HTRACE("%d", TT_LAST_PARM - TT_FIRST_PARM);
#endif
Run Code Online (Sandbox Code Playgroud)

如果我硬编码值,

#if ((53 - 16) >= 32)
#error More than 32 parm tokens
#else
    HTRACE("%d", 53 - 16);
#endif
Run Code Online (Sandbox Code Playgroud)

预处理器DOES生成错误:

错误1致命错误C1189:#error:超过32个parm标记d:\ codeMTX\Knowbase\KBMatL\PrintParser.CPP 2663

c++ enums visual-studio-2008 c-preprocessor

2
推荐指数
1
解决办法
77
查看次数