我在Linux上,用C编码并尝试使用argv变量的align属性,但没有运气:
我们怎样才能使argv参数(每个参数)与定义的边界对齐,比如16位,而不先将它复制到对齐的变量,通过memcpy或替代?
甚至可能吗?
答案 0 :(得分:2)
这是不可能的。 align属性告诉编译器如何对齐它生成代码和数据的结构。它还告诉编译器有关外部结构的实际对齐以及其他代码生成的数据。
argv参数由C启动代码或OS直接提供。除了指针数组的隐式自对齐之外,不应该假设它们的对齐。您不能使用编译器属性更改它,不建议强制编译器做出其他假设。
答案 1 :(得分:1)
在某些实现中,argv变量可以直接指向原始命令行,其中每个参数之后的第一个分隔符(空格)已替换为null。 在这样的实现中,很明显,对齐就是它的本质,不能被控制!