J'ai eu problème avec inclut dans le studio visuel. Je veux compiler le projet à la fois pour Windows et Linux.Visuel studio inclure la visibilité
en studio visuel, je me suis une petite classe dans le fichier .hpp, qui utilise std::exception
et std::is_pod<T>
, mais je ne comprend pas type_traits
ni stdexcept
!! Et le fichier se compile parfaitement avec Visual Studio! Pourquoi?
Ce faisant, sur linux me donne l'erreur
In file included from Packet.hpp:3:0,
from AbstractPacketFactory.hpp:2,
from AuthenticationPacketFactory.hpp:2,
from AuthenticationPacketFactory.cpp:1:
ByteSerializer.hpp: In member function ‘byte_serializer& byte_serializer::operator>>(T&)’:
linux g ++ est correct - pourquoi visual studio plus me prévenir? Y a-t-il quelque chose que je puisse faire à ce sujet? J'utilise VS comme IDE principal et je voudrais éviter une telle surprise à l'avenir (actuellement il y a 50 erreurs comme ça ...)
Il n'y a aucune exigence pour la bibliothèque standard C++ pour ** pas ** inclure d'autres fichiers, aussi longtemps que la règle as-if est valide. La bibliothèque standard C++ fournie avec Visual Studio (quelle version utilisez-vous quand même?) Semble inclure des fichiers d'en-tête pour sa propre implémentation. Si vous avez besoin de résoudre ce problème, vous ne pouvez rien faire d'autre que de le compiler pour toutes les plates-formes de destination. – IInspectable
Ils sont probablement inclus par un autre en-tête standard que vous avez inclus. – drescherjm