Ho un file di assieme (asm.S
), che necessita di una costante #define
'd in un file di intestazione C (c_decls.h
). Il file di intestazione contiene dichiarazioni di funzioni C oltre allo #define
che desidero. Sfortunatamente, i codici a barre gcc
durante il tentativo di compilare il file assembly. Ad esempio,#include intestazione con dichiarazioni C in un file assembly senza errori?
c_decls.h
#ifndef __c_decls_h__
#define __c_decls_h__
#define I_NEED_THIS 0xBEEF
int foo(int bar);
#endif
asm.S
#include "c_decls.h"
.globl main
main:
pushl %ebp
movl %esp, %ebp
movl $I_NEED_THIS, %eax
leave
ret
uscita
> gcc -m32 asm.S
c_decls.h: Assembler messages:
c_decls.h:6: Error: junk '(int bar)' after expression
c_decls.h:6: Error: suffix or operands invalid for 'int'
C'è un modo per #include
un file di intestazione C che contiene dichiarazioni di funzione in un file di assembly? (Cambiare l'intestazione o lo spostamento/ridefinizione della #define
non è un'opzione.)
(Modifica della intestazione o lo spostamento/ridefinizione della #define non è un'opzione.) See come hai squalificato l'opzione più ragionevole, direi che sei sfortunato. :-) – asveikau
Considerando che l'intestazione invoca comportamento non definito (utilizzando un nome che inizia con doppia sottolineatura come la sua guardia multiple-inclusion), penso che si dovrebbe riconsiderare il requisito di non cambiarlo. :-) –