Thread overview
Help needed!
Jul 24, 2005
xyk
Jul 24, 2005
Bertel Brander
Jul 25, 2005
mx0
July 24, 2005
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.


July 24, 2005
xyk wrote:

> #include "myPrint.c"
You don't normally include .c files, but thats not the
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
July 25, 2005
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)