基本上这就是我需要的:
- 我有一个外部的
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
? - ruakhconst(char)* yyfilename
是你想要的语法 - 一个指向常量数据的可变指针。 - Adam D. Ruppe