Bu sorunu gidermeye çalışırken: C++ How can I prevent my team developers from using integer version of abs by mistake?abs
işlevini kullanmak için makroyu kullanarak artık kullanamazsınız.Bir önişlemci deyimi kullanılarak standart bir işlev yasaklanamaz mı?
I g myabs(3);
ihtiva eden bir kod ++ seçenek derler -Dmyabs=abs
(myabs
abs
ile ikame edilmiştir) derlemek, iyi.
Şimdi abs(3);
g ++ seçeneği -Dabs=forbidden
içeren bir kod derlediysem de derler ... neden bu forbidden
'un neden bildirildiğini bildirmiyor? Ön işleme sırasında abs
'un forbidden
ile değiştirilmediği görünüyor ... neden?
Muhafızları içerecek şekilde koruma altına alınmışsa, içerisine -include cmath derleyici argümanı ile dahil edilmesini zorlayabilir, sonra abs makrosunu tanımlayın (denenmemiş) – matt
İyi cevap: 'abs' i içermeden önce' abs' yerine 'yasak 'ile değiştirilir. sonra değil, yani "#undef abs" yapmalı – jpo38