Receiving "pthread_mutexattr_init" during compilation when using FileLogger.
Mike Parker
aldacron at gmail.com
Mon Jun 7 10:36:23 UTC 2021
On Monday, 7 June 2021 at 09:29:08 UTC, tastyminerals wrote:
> I getting
> ```
> import/core/sync/mutex.d(87,36): Error:
> `pthread_mutexattr_init` cannot be interpreted at compile time,
> because it has no available source code
> ```
> compile time error. One of those D exceptions which doesn't say
> where it happened in your code so you need to comment out the
> lines that might cause it one by one :D
>
> I found that this was caused by the "FileLogger" which I create
> at the top of the file. But why?
You can't initialize classes at module scope. You can declare
them, but then they must be initialized in a function or a module
constructor. Normally for a type `MyClass` in module `foo`, you'd
see an error like this:
```D
Error: variable `foo.MyClass` is a thread-local class and cannot
have a static initializer. Use `static this()` to initialize
instead.
```
I guess CTFE runs before the check that catches this, though, and
the `FileLogger` constructor ultimately triggers the error your
seeing.
More information about the Digitalmars-d-learn
mailing list