小编Orv*_*ing的帖子

C++命名空间建议

我只是在教自己C++命名空间(来自C#背景),我真的开始认为,即使C++比大多数其他语言做得更好,嵌套命名空间也不是其中之一!

我是否正确地认为,为了声明一些嵌套的命名空间,我必须执行以下操作:

namespace tier1
{
    namespace tier2
    {
        namespace tier3
        {
            /* then start your normal code nesting */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

相反:

namespace tier1::tier2::tier3
{
}
Run Code Online (Sandbox Code Playgroud)

àlaC#?

当我需要转发声明时,这变得更加疯狂:

namespace tier1
{
    namespace tier2
    {
        namespace forward_declared_namespace
        {
            myType myVar; // forward declare
        }
        namespace tier3
        {
            /* then start your normal code nesting */
            class myClass
            {
                forward_declared_namespace::myType myMember;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请记住,我开发的典型系统包括:

MyCompany::MySolution::MyProject::System::[PossibleSections]::Type
Run Code Online (Sandbox Code Playgroud)

这就是为什么你不倾向于在C++示例中看到很多名称空间的使用?或者通常只有单个(非嵌套)命名空间?

UPDATE

对于任何有兴趣的人,这就是我最终解决这个问题的方法.

c++ namespaces

72
推荐指数
5
解决办法
4万
查看次数

C#中基于位的BinaryWriter

我正在研究基于位的B/W/Greyscale预编译字体格式,并且在阅读或编写格式时遇到了问题,(我无法确定问题的位置.(我确实有基于B/W位的版本工作,但是别名字体看起来不太好,正如您可以想象的那样,特别是在使用320x200像素屏幕时))但是决定只使用BinaryWriter比写入更容易当我拉动图像数据时,一个bool [].

文件中像素的基本格式如下所示:

1 - 白色像素(最短,因为这将是大多数像素)

00 - 黑色像素(无理由为纯黑色像素写入10位,其中有合理的数量)

01 - 灰度像素,后跟1个字节,描述像素的阴影

现在,编写所需信息的一切都很好,花花公子,因为这是全部字节,但默认的.Net 4.0 BinaryWriter将布尔值写为完整字节,并且可以想象,这会否定基于位的使用格式.所以我想知道,有没有BinaryWriter,(和BinaryReader)实现那里的基于位的

编辑:我最终创建了自己的.(请参阅代码的答案.)

c# binarywriter

6
推荐指数
2
解决办法
4329
查看次数

调试.net编译器

我正在研究一种语言(外部字节码)的编译器,并且正在使用System.Reflection.Emit.

现在,当我在反射器中打开生成的程序集时,一切看起来都很好,并且它重新编译为C#也很好(并运行),但是当我尝试运行生成的main函数时,我得到一个InvalidProgramException:

"Common Language Runtime检测到无效程序."

它可能只是导致问题的单个操作码,但是,因为主要功能使用100多个操作码,我无法确定导致问题的操作码.

每个操作码都非常复杂,因此手动测试每个操作码是不行的.

有没有办法让.NET告诉我它在函数中检测到无效程序的位置?

如果没有,是否还有其他工具可用于确定问题的根源?

.net compiler-construction debugging

5
推荐指数
1
解决办法
131
查看次数