Tengo un archivo de ensamblaje (asm.S
) que necesita una constante #define
'd en un archivo de encabezado C (c_decls.h
). El archivo de encabezado contiene declaraciones de función C además del #define
que quiero. Lamentablemente, gcc
barfs al intentar compilar el archivo de ensamblaje. Por ejemplo,#incluye encabezado con declaraciones C en un archivo de ensamblaje sin errores?
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
salida
> 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'
¿Hay una manera de #include
un archivo de encabezado C que contiene declaraciones de funciones en un archivo de ensamblaje? (Cambiar el encabezado o en movimiento/redefinición de la #define
no es una opción.)
(Cambio de la encabezado o mover/redefinir #define no es una opción.) Ver Si ha descalificado la opción más razonable, diría que no tiene suerte. :-) – asveikau
Teniendo en cuenta que el encabezado invoca un comportamiento indefinido (al usar un nombre que comienza con doble subrayado como su guardia de inclusión múltiple), creo que debería reconsiderar el requisito de no cambiarlo. :-) –