هل هناك مفتاح لتعطيل الرسوم الثلاثية مع رنة?
سؤال
لقد حصلت على بعض (تراث) التعليمات البرمجية التي أنا بناء مع رنة لأول مرة.الرمز هو شيء من هذا القبيل:
sprintf(buf, "%s <%s ????>", p1, p2);
رنة يعطي التحذير التالي (خطأ مع -Werror
):
test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
sprintf(buf, "%s <%s ????>", p1, p2);
^
من الواضح أن ??>
لا يقصد به أن يكون تريغراف ، لذلك أريد تعطيل تريغرافس تماما (المصدر لا تستخدم عمدا لهم في أي مكان).
لقد حاولت -no-trigraphs
لكن هذا ليس خيارا حقا:
clang: warning: argument unused during compilation: '-no-trigraphs'
يمكنني إيقاف تحذير تريغرافس مع -Wno-trigraphs
ولكن أنا لا أريد تحويل تريغراف أن تأخذ في الواقع مكان على الإطلاق.
ملاحظة:تم تمكين تريغرافس كأثر جانبي غير مقصود من استخدام -std=c89
.
المحلول
حاول استخدام جنو * الوضع - " تريغرافس الافتراضي إلى أن تكون خارج في جنو * وسائط;يمكن تمكينها بواسطة-تريغرافس الخيار."(انظر http://clang.llvm.org/docs/UsersManual.html#c_modes للاختلافات الأخرى ومفتاح سطر الأوامر)
نصائح أخرى
لم أتمكن من رؤية طريقة واضحة لتعطيل تريغرافس (بدلا من تحذير تريغرافس).ربما تكون أسهل طريقة لإصلاح هذا الرمز هي تغييره إلى:
sprintf(buf, "%s <%s ????"">", p1, p2);