Thread overview
(char* str) is not callable using argument types (string)
Jul 17, 2017
Zaheer Ahmed
Jul 17, 2017
Adam D. Ruppe
Jul 17, 2017
Zaheer Ahmed
Jul 18, 2017
Shachar Shemesh
Jul 18, 2017
Adam D. Ruppe
July 17, 2017
I am Developing and Operation System in D and when writing writeln("Zaheer"); function, I got an ERROR.
Error: function kernel.dwriteln (char* str) is not callable using argument types (string)
I also tried Casting.
I Developed OS in C and C++ but first time stuck in types.

July 17, 2017
On Monday, 17 July 2017 at 13:56:24 UTC, Zaheer Ahmed wrote:
> I Developed OS in C and C++ but first time stuck in types.

A lot of C and C++ knowledge will carry over to D, but it isn't exactly the same. D's strings are of type `string` which is another word for `immutable(char)[]`.

immutable means the contents never change. A `[]` slice is a pointer+length pair in a single type.


For your simple case, making it `const char*` should work... but you might want to read up on D's const and array types before going to much further.
July 17, 2017
On Monday, 17 July 2017 at 14:10:39 UTC, Adam D. Ruppe wrote:
> On Monday, 17 July 2017 at 13:56:24 UTC, Zaheer Ahmed wrote:
>> I Developed OS in C and C++ but first time stuck in types.
>
> A lot of C and C++ knowledge will carry over to D, but it isn't exactly the same. D's strings are of type `string` which is another word for `immutable(char)[]`.
>
> immutable means the contents never change. A `[]` slice is a pointer+length pair in a single type.
>
>
> For your simple case, making it `const char*` should work... but you might want to read up on D's const and array types before going to much further.

Thank you It worked.
July 18, 2017
On 07/17/2017 05:10 PM, Adam D. Ruppe wrote:
> On Monday, 17 July 2017 at 13:56:24 UTC, Zaheer Ahmed wrote:
>> I Developed OS in C and C++ but first time stuck in types.
> 
> A lot of C and C++ knowledge will carry over to D, but it isn't exactly the same. D's strings are of type `string` which is another word for `immutable(char)[]`.
> 
> immutable means the contents never change. A `[]` slice is a pointer+length pair in a single type.
> 
> 
> For your simple case, making it `const char*` should work...

No, it shouldn't.

Worst, it should work *most* of the time.

If you cast a D string to const char* may or may not null terminate the string.

Shachar

July 18, 2017
On Tuesday, 18 July 2017 at 03:58:49 UTC, Shachar Shemesh wrote:
> If you cast a D string to const char* may or may not null terminate the string.

I do not recommend explicitly casting. This specific case is a string literal, which is guaranteed to be null terminated and will implicitly cast.

In the cases where it is not null terminated, the compiler will reject it as a type error.