"Error: function expected before (), not module *module* of type void
Samir
samir at aol.com
Sat Sep 22 01:51:33 UTC 2018
On Monday, 24 March 2008 at 17:41:11 UTC, Steven Schveighoffer
wrote:
> I know you fixed the problem, but just an FYI, the reason is
> because when you import rollDice, you bring both rollDice the
> module and rollDice the function into the global namespace
> (which confuses the compiler 'cause it doesn't know what symbol
> you want to use). This is normally avoided in libraries by
> having a package tree. So for example, if you created
> everything in the subdirectory foo, and had your modules be:
>
> module foo.diceroller;
> import foo.rollDice;
>
> Then the import would import the module foo.rollDice, and the
> function rollDice, and the compiler would no longer be confused
> about what you are trying to call.
>
> IMO, this makes it difficult to write multi-file applications
> that live in one directory. It would be nice if this was
> changed...
>
> -Steve
I know this thread is quite old but I still seem to be getting a
similar error and don't understand how to resolve it. I currently
have a program isPrime.d that I would like to reuse in other
programs:
isPrime.d:
bool isPrime(int n) {
// logic to check if n is prime
}
main.d:
import isPrime;
void main() {
isPrime(x);
}
Both files are in the same directory. When compiling main.d, I
get:
Error: function expected before (), not module isPrime of type
void
I've tried changing the name of the function isPrime in isPrime.d
to something else (as well as changing the name in the main
program) but then I get an error similar to:
In function `_Dmain':
main.d:(.text._Dmain[_Dmain]+0x83): undefined reference to
`_D7isPrime3isPFiZb'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
Thanks in advance.
More information about the Digitalmars-d-learn
mailing list