对于代码:
int hi(int);
int hi();
int main()
{
hi(3);
}
Run Code Online (Sandbox Code Playgroud)
我没有收到任何编译错误(调用hi(); 不带参数确实会出现编译错误)。
我预计编译器会抱怨该函数已经以不同的方式声明了。知道为什么会出现这种行为吗?
假设我有结构:
typedef struct my_char {
char c;
} my_char_t;
Run Code Online (Sandbox Code Playgroud)
我可以假设任何时候内存地址都会对齐吗?
我想也许是的,因为在教程中我看到了这样的结构:
typedef struct my_char2 {
char c;
int i;
} my_char2_t;
Run Code Online (Sandbox Code Playgroud)
c和之间有填充i,因此看起来假设c是对齐的。
这与这个问题相关:有没有一种方法可以在使用完缓冲区后对其进行内存设置(例如出于安全考虑)而不对其进行优化?
尝试将指针强制转换为易失性指针,收到有关将易失性指针发送到不需要易失性的函数的警告。