让我们考虑结构:
struct S1 {
int a;
char b;
};
struct S2 {
struct S1 s; /* struct needed to make this compile as C without typedef */
char c;
};
// For the C++ fans
struct S3 : S1 {
char c;
};
Run Code Online (Sandbox Code Playgroud)
S1的大小为8,由于对齐而预期.但是S2和S3的大小是12.这意味着编译器将它们构造为:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11|
| a | b | padding | c | padding |
Run Code Online (Sandbox Code Playgroud)
编译器可以在不破坏对齐约束的情况下将c放在6 7 …
我使用checkstyle来检查我的java代码是否符合我们项目的指导原则.
但是,我们有一个指南,我无法弄清楚如何使用此工具进行检查.我们想要允许简单的if(理解是否没有其他,没有其他条件结构)没有大括号,就像在这个例子中:
// valid
if(condition) callFunction();
// invalid
if(condition) for(int i = 0; i < someValue; i++) callFunction(i);
// valid
if(condition) {
for(int i = 0; i < someValue; i++) {
callFunction(i);
}
}
// invalid
if(condition) callFunction();
else callOtherFunction();
Run Code Online (Sandbox Code Playgroud)
可以讨论这个约定,但这是我们选择的.它允许减少非常琐碎的if语法,但确保我们对更复杂的结构有良好的缩进和块定界.
任何帮助都将非常感激.
我还准备做一些代码来执行此检查,如果没有可用的,但实际上不知道从哪里开始.在最后一次报道中,关于这一点的一些提示也将受到赞赏.
我面临一个相当棘手的问题.我正在尝试将2个虚拟内存区域指向相同的物理内存.关键是在不同的内存区域上有不同的页面保护参数.
在这个论坛上,用户似乎有一个解决方案,但它似乎有点hacky并且很明显可以在性能方面做得更好:http: //www.linuxforums.org/forum/programming-scripting/19491-map -两个虚存储器ADDRES-相同物理-page.html中
当我面临同样的问题时,我想在这里试一试,知道是否有人有更好的想法.不要害怕提到引擎盖后面的脏细节,这就是这个问题的内容.
提前谢谢.
在可执行文件上使用 readelf 时,我在一些符号名称后的括号中得到一个数字。例如:
Num: Value Size Type Bind Vis Ndx Name
49: 00000000002052a0 8 OBJECT GLOBAL DEFAULT 27 stderr@GLIBC_2.2.5 (3)
Run Code Online (Sandbox Code Playgroud)
(3)在这种情况下,stderr 的符号名称后面有一个。这是什么意思?
c ×2
linux ×2
c++ ×1
checkstyle ×1
if-statement ×1
java ×1
low-level ×1
memory ×1
readelf ×1
struct ×1