J'ai encore une autre erreur en essayant de compiler avec GCC 4.2.1 d'Apple utilisant le -fasm blocs arguments (qui permet Intel de style syntaxe de montage) code assembleur en ligne qui a travaillé dans MSVC: opérande d'assemblage de blocs non reconnu, label 'LASM TYPE $' utilisé mais non défini:erreur assembleur en ligne GCC: opérande d'assemblage bloc non reconnu
typedef struct _MyStruct
{
int data;
//...
}MyStruct;
void testAsm()
{
MyStruct *pMyStruct = new MyStruct(); // Please not that I create an instance of MyStruct here only for the sake of simplicity
_asm
{
mov edi, pMyStruct
add edi, TYPE MyStruct // error: block assembly operand not recognized. label 'LASM$TYPE' used but not defined
//...
};
delete pMyStruct;
}
Comment puis-je résoudre ce problème?
Qu'essayez-vous exactement de faire? Je n'ai jamais vu de syntaxe comme ça en Visual C++ ... – Goz
En fait, c'est la première fois que je le vois aussi et je n'ai pas pu trouver de documentation, ce qui le couvrirait ... – Ryan
J'ai aussi rencontré une variation de ce problème - dans un autre code d'assemblage en ligne, le mot-clé offset est utilisé: "mov eax, offset fptr", où fptr est une fonction "void fptr (void * pData)" ... Cette fois, GCC signale une erreur reconnu ":: – Ryan