www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript

c++ - Help needed!

↑ ↓ ← xyk <xyk_member pathlink.com> writes:
Have been trying to figure out how to put a function in a separate file and make
it work.

Here is the main program, in a file named "tmpmain.c":

#include "myPrint.c"

void myPrintf();

int main()
{
int i=1;
myPrintf();
return 0;
}


Here is the function myPrintf(), in a file named "myPrintf.c":
void myPrint()
{
printf("ok!");
}


This is the error message I got when trying to compile under the DOS command of
Win XP:

E:\bjs\C>dmc tmpmain
link tmpmain,,,user32+kernel32/noi;
OPTLINK (R) for Win32  Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved

tmpmain.obj(tmpmain)
Error 42: Symbol Undefined _myPrintf

--- errorlevel 1


I'm just a beginner. Any help would be appreciated.
Jul 24 2005
→ Bertel Brander <bertel post4.tele.dk> writes:
xyk wrote:

 #include "myPrint.c"

problem
 void myPrintf();

A prototype for myPrintf, note the f in the end.
 int main()
 {
 int i=1;
 myPrintf();

Call myPrintf, again note the f in the end.
 Here is the function myPrintf(), in a file named "myPrintf.c":
 void myPrint()

Then a myPrint function, but no f in the end...
 {
 printf("ok!");
 }
 

You better add: #include <stdio.h> to myPrint.c, at the top. I C there is a differece between foo() and foo(void), better add void to myPrintf, both the function and the prototype. /b
Jul 24 2005
→ mx0 seznam.cz writes:
1) you don't need to declare myPrintf in the "tmpmain.c" - just remove the line 
void myPrintf();
it's useless in tihs case and it's only confusing here (see next, you only have
the function declared but not defined, therefore the compiler message is
correct).

2) there is missing "f" at the end of function name "myPrint()" in the
"myPrintf.c".

3) use
#include <stdio.h>
in the "myPrintf.c"

4) most better approach will be to use header (.h) files instead of including .c
files in another .c's

5) (hint) do not declare functions in pure C like "func()", pure C conformance
requires declaring "func(void)" if the function has none parameters (most C
compilers compiles even "func()", but some don't and the compiler is not liable
to compile such code)
Jul 25 2005