Message-ID: <3f3e2079$0$168$cc7c7865@news.luth.se> From: Martin Str|mberg Subject: as and structs Newsgroups: comp.os.msdos.djgpp User-Agent: tin/1.4.6-20020816 ("Aerials") (UNIX) (NetBSD/1.6Q (alpha)) Date: 16 Aug 2003 12:15:53 GMT Lines: 101 NNTP-Posting-Host: speedy.ludd.luth.se X-Trace: 1061036153 news.luth.se 168 130.240.16.13 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hello. Versions: gcc 2.953 as and ld 2.12.1 make 3.79.1 I have a header file x.h: #define DEBUG (1) void print_world(void); struct Y { int i; char *p; }; This header file is #included in x.c: #include #include "x.h" int main(void) { printf("Hello "); print_world(); return 0; } and in y.S: #include "x.h" debug: .byte DEBUG world: .asciz "world\n" .globl _print_world _print_world: testb $0xff, debug jz .Lskip_print pushl $world call _printf addl $4, %esp .Lskip_print: ret makefile is: SHELL = /bin/sh CC = gcc CFLAGS = -O2 -Wall all: x x: x.o y.o x.o: x.h y.o: x.h clean: -rm *.o make says: cd k:/tmp/x/ make clean; make rm *.o gcc -O2 -Wall -c -o x.o x.c gcc -c -o y.o y.S t:\tmp\cc24z1S1.s: Assembler messages: t:\tmp\cc24z1S1.s:5: Error: no such instruction: `void print_world(void)' t:\tmp\cc24z1S1.s:7: Error: no such instruction: `struct Y{' t:\tmp\cc24z1S1.s:8: Error: suffix or operands invalid for `int' t:\tmp\cc24z1S1.s:9: Error: no such instruction: `char *p' t:\tmp\cc24z1S1.s:10: Warning: rest of line ignored; first ignored character is `}' make.exe: *** [y.o] Error 1 Compilation exited abnormally with code 2 at Sat Aug 16 14:03:27 If I remove the prototype and struct in x.h it works fine. Questions: 1. What should I do to make this work nicely with prototypes and structs in header files? 2. Why is CFLAGS missing while compiling y.S Right, MartinS