यह -malign-double
संकलक विकल्प की तरह लगता है बजना से हटा दिया गया। उदाहरण कोड:करता बजना जीसीसी के -malign-डबल ध्वज को एक बराबर है?
#include <stddef.h>
#include <stdio.h>
typedef struct X { char a; long long b; } X;
int main(void)
{
printf("%zd\n", offsetof(X, b));
return 0;
}
जब 32-बिट मोड (-m32
) में जीसीसी के साथ संकलित किया गया, पर अगर -malign-double
सक्षम या क्रमशः नहीं है निर्भर करता है उत्पादन 8 या 4 के लिए बनाया जा सकता है। लेकिन बजना इस विकल्प का समर्थन करने के लिए प्रकट नहीं होता है:
$ clang test.c -m32 -malign-double
clang: warning: argument unused during compilation: '-malign-double'
$ ./a.out
4
बजना संस्करण:
Apple clang version 3.1 (tags/Apple/clang-318.0.58) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.3.0
Thread model: posix
मैं बजना द्वारा समर्थित संकलक झंडे की पूरी सूची पर किसी भी आधिकारिक दस्तावेज खोजने के लिए नहीं कर पा रहे, वे तो बस लगता है कि अधिकांश भाग के लिए जीसीसी के दस्तावेज को स्थगित कर दिया गया है।
वहाँ बजना में -malign-double
के लिए किसी भी वर्तमान बराबर है? या मैं अब के लिए एक अलग संकलक का उपयोग करने के लिए अटक गया हूँ? मुझे कुछ कोड संकलित करने की आवश्यकता है जो उस ध्वज का उपयोग करने वाली बाइनरी-केवल तृतीय-पक्ष लाइब्रेरी के विरुद्ध लिंक करती हैं।
आपको लगता है कि किसी भी सवाल का जवाब मिला? – tito
ठीक है, ऐसा लगता है कि यह अभी भी संभव नहीं है, क्योंकि किसी ने मुझे आईआरसी पर बताया: " यदि संभव हो तो इसके लिए कोई विकल्प नहीं है (उदाहरण के लिए एबीआई द्वारा बाध्य नहीं), एलएलवीएम प्राकृतिक संरेखण का उपयोग करेगा | यदि यह कोड उत्पन्न होता है, तो आप गुणों का उपयोग करके संरेखण को हमेशा मजबूर कर सकते हैं " –
tito