Operateur ~

Operateur ~

par Vincent Raniolo,
Number of replies: 9

Bonjour, 


je travaille sur mac. J'ai, dans le projet, l'opérateur ~ mais sur le terminal ça m'indique :

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [testVecteur] Error 1

Du coup, je ne vois pas si la machine ne reconnait pas le tilda ou si c'est un autre probleme.


Merci beaucoup

In reply to Vincent Raniolo

Re: Operateur ~

par Jean-Cédric Chappelier,

je pense que c'est autre chose.

Il faudrait toute la sortie de la commande, depuis le make initial jusqu'à la fin (pourquoi pas une copie d'écran ?)

In reply to Jean-Cédric Chappelier

Re: Operateur ~

par Vincent Raniolo,

Bonjour professeur, 


Je vous remercie pour la réponse. J’ai pris photo du terminal. Prenez l’avant dernier make que j’ai tapé pour voir la réponse du terminal.

Merci

Attachment F6D291FD-681B-4C98-8719-D961E3EEC38C.jpeg
In reply to Vincent Raniolo

Operateur ~

par Deleted user,
Hello, il semble que make appelle clang quand il fait le lien entre tes fichiers objets, et d'après ce que j'ai vu chez d'autres étudiants, il essaye probablement d'interpréter ton code comme du C.

As-tu rajouté
CXX=g++
CC=$(CXX)
au début de ton Makefile?
In reply to Deleted user

Re: Operateur ~

par Vincent Raniolo,

Bonjour, 


mon makefile est comme suit :

CXX = g++

CC  = $(CXX)


CXXFLAGS = -std=c++11  # C++11



CXXFLAGS += -pedantic -Wall  

CXXFLAGS += -g                      

CXXFLAGS += -pg                 

LDFLAGS  += -pg                  

CXXFLAGS += -O2                   


all: testVecteur


Vecteur.o: Vecteur.cc Vecteur.h


testVecteur.o: testVecteur.cc Vecteur.h


testVecteur: testVecteur.o Vecteur.o


Donc, il y a bien la commande que vous m'avez décrite

In reply to Vincent Raniolo

Re: Operateur ~

par Vincent Raniolo,

De plus, lorque je n'utilise pas mon operateur ~ dans mon fichier testVecteur,  le make marche normalement et le fichier compile normalement donc il doit y avoir un problème avec le signe non ?

In reply to Vincent Raniolo

Re: Operateur ~

par Jean-Cédric Chappelier,

oui bien sûr (je n'avais pas fait assez attention au titre de votre message et lu uniquement le message d'erreur qui était un message du linker (édition de liens)) :
~  N'est PAS un signe surchargeable en tant qu'opérateur binaire : c'est un opérateur unaire.
Nous avons donné la liste des opérateurs C++ dans le MOOC dans le document « Complément : liste des opérateurs »

Edité le 22 mars : ajout de compléments en bleu et suppression de la phrase inutile (nous n'y avons pas dit l'arité des opérateurs ; DSL).

In reply to Jean-Cédric Chappelier

Re: Operateur ~

par Vincent Raniolo,

bonsoir monsieur,


Pourtant, le tilda est sur cette liste et c'est aussi celui qui est indiqué dans la fiche de  projet etape 3 en ce qui concerne les vecteurs unitaires.


Bonne soirée

In reply to Vincent Raniolo

Re: Operateur ~

par Jean-Cédric Chappelier,

oui, je n'étais pas clair.
Je viens de corriger mon message et prolonge l'explication :
l'opérateur ~ est un opérateur unaire (qui normalement représente l'inversion de tous les bits). Il s'utilise donc comme ceci : ~a et surtout il ne prend donc aucun argument.
Donc votre code de test est faux (on y parle de operator(const Vector&)), soit parce que vous avez fait un a ~b ; soit (non exclusif ;-) ) parce que dans votre de départ vous aviez effectivement écrit un opérateur ~ binaire et que votre Vecteur.cc n'a pas compilé (et que vous êtes donc en train de linker avec l'ancien Vecteur.o, celui d'une compilation antérieure qui n'avait pas l'erreur).

J'espère que c'est plus clair.