2015-03-19 87 views
0

我在Linux上,編碼爲C,並嘗試使用argv變量的align屬性,但沒有運氣:C - 內存對齊argv?

我們如何導致argv參數(每個參數)與指定邊界對齊,比方說16位,,而不是通過memcpy或其他選項先將它複製到對齊變量

這有可能嗎?

+0

您認爲誰需要'argv'字符串有任何特定的對齊方式,爲什麼? – chqrlie 2015-03-19 07:38:08

+0

@chqrlie:沒有人,甚至是我自己!只是爲了好奇:) – Kroma 2015-03-19 08:30:45

回答

2

這是不可能的。 align屬性告訴編譯器如何對它爲其生成代碼和數據的結構進行對齊。它還會告訴編譯器extern結構和其他代碼生成的數據的實際對齊。

argv自變量由C啓動代碼或OS直接提供。除了指針數組的隱式自對齊之外,不應該假設它們的對齊。你不能用編譯器屬性來改變它,不建議強制編譯器做出其他假設。

+0

確實,很高興知道。謝謝 ! – Kroma 2015-03-19 08:29:12

1

在某些實現中,argv變量可以直接指向原始命令行,其中每個參數後的第一個分隔符(空格)已被空值替換。 在這樣的實現中,很明顯,對齊是它是什麼,不能被控制的!

+0

絕對是。非常感謝+1 – Kroma 2015-03-19 08:29:58