Ну в общем вот что мне нужно:
- У меня есть переменная
extern
(al)char *
- Я хочу присвоить значение строки D
Код:
import std.stdio;
import std.string;
import core.stdc.stdlib;
extern (C) int yyparse();
extern (C) extern __gshared FILE* yyin;
extern (C) extern __gshared char* yyfilename;
void main(string[] args)
{
string filename = args[1];
auto file = File(filename, "r");
yyfilename = toStringz(filename);
yyin = file.getFP();
yyparse();
}
Однако функция toStringz
возвращает эту ошибку:
main.d(15): Error: cannot implicitly convert expression (toStringz(filename)) of type immutable(char)* to char*
Любая идея, что происходит не так?
const
может это исправить. Можетextern (C) extern __gshared const char* yyfilename
? - person ruakh   schedule 14.03.2014const(char)* yyfilename
— это синтаксис, который вам здесь понадобится — изменяемый указатель на константные данные. - person Adam D. Ruppe   schedule 14.03.2014