我有一个employee实例化的结构定义monica。结构看起来像这样
struct __attribute__((aligned(2))) employee {
int salary; // 4 bytes
int age; // 4 bytes
} monica;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我强制将结构对齐,2但 gcc 不会将结构对齐设置为 2,也不会引发错误。我尝试使用alignof宏(include <stdalign.h>)打印结构的对齐方式,该宏4作为结构的对齐方式返回。为什么 gcc 不能将结构的对齐方式设置为小于其字段之一的最大对齐方式的值。
我尝试通过另外添加一个指针作为结构中的字段来重现该问题。在将指针添加为字段时,我注意到 gcc 不允许我使用__attribute__((aligned(x))).
1GCC 允许我通过使用设置结构的对齐方式__attribute__((packed)),但它仍然不允许我1通过使用设置对齐方式__attribute__((aligned(1)))。为什么会发生这种情况?
海湾合作委员会 x86 v7.1.1
我想在 Go 的一条语句中声明两个不同数据类型的变量(string和)。error我不想使用短声明(:=)运算符,因为我喜欢在声明时指定变量的类型。
我正在关注Go 文档中的 Go 教程。我有一个函数greetings.Hello(),我正在从另一个模块调用它。该greetings.Hello()函数如下所示:
package greetings
import (
"errors"
"fmt"
)
func Hello(name string) (string, error) {
// If no name was given, return an error with a message
if name == "" {
return "", errors.New("empty name")
}
// If a name was received, return a value
var message string = fmt.Sprintf("Welcome %v!", name)
return message, nil
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,该函数返回两个值(astring和 an error)。所以最终,我必须将该函数的结果分配给调用者中的两个变量。我正在 …