我想知道为什么人们不在头文件的名称中使用大写.我看到许多头文件的名称只有小写.但我认为如果用大写字母写它们会更容易,比如"BaseClass.h","SubClass.h",而不是"baseballs.h","subclass.h".这是为什么?或者只是我看到的头文件只以小写命名?
我正在查看一些c ++代码,我遇到了这个:
if( (size & 0x03L) != 0 )
throw MalformedBundleException( "bundle size must be multiple of four" );
Run Code Online (Sandbox Code Playgroud)
L在十六进制值之后的含义是什么?
它是如何改变价值的0x03?
我正在阅读《游戏编码完整版》第4版。有一个关于内存对齐的主题。在下面的代码中,作者说,第一个结构确实很慢,因为它既没有位对齐也没有字节对齐。第二个不是位对齐而是字节对齐。最后一个很快,因为两者都有。他说,没有编译指示,编译器将对齐内存本身,这会浪费内存。我无法真正获得计算结果。
这是文本的一部分:
如果让编译器通过添加未使用的字节来优化SlowStruct,则每个结构将是24个字节而不是14个字节。在第一个char变量之后填充七个额外的字节,并在末尾添加其余字节。这样可以确保整个结构始终以8字节为边界开始。这大约是浪费空间的40%,这都是由于成员变量的粗心排序所致。
这是粗体字的结论行:-
不要让编译器浪费宝贵的内存空间。让您的一些 脑细胞发挥作用,并对齐您自己的成员变量。
请让我看一下计算并更清楚地解释填充概念。
码:-
#pragma pack(push, 1)
struct ReallySlowStruct
{
char c : 6;
__int64 d : 64;
int b : 32;
char a : 8;
};
struct SlowStruct
{
char c;
__int64 d;
int b;
char a;
};
struct FastStruct
{
__int64 d;
__int b;
char a;
char c;
char unused[2];
};
#pragma pack(pop)
Run Code Online (Sandbox Code Playgroud) 我已经在大学里学习了8086英特尔处理器的汇编编程.我现在正试图修改它.
我听说汽车嵌入式系统需要汇编,所以我想知道哪种方式可以学习它是最好的?我不需要浪费时间,因为我想找份工作.
修改8086大会真的有帮助吗?或者转向32位x86组件更好?
谢谢.