2311dC++连接与串

原文
extern(C++)函数使用在装饰名中包括参数类型的C++装饰名.但是,因为C++没有像D的T[]内置切片类型,因此C++没有有效的D切片装饰.

因此,无法编译以D切片为参数的extern(C++)函数.

为此,可按结构转换切片:

cpp 复制代码
struct DSlice(T)
{
    T* ptr;
    size_t length;
    T[] opIndex() => ptr[0 .. length];
}
DSlice!T toDslice(T)(T[] slice)
{
    return DSlice!T(slice.ptr, slice.length);
}
extern(C++) void hello(DSlice!(const(char)) arg)
{
    import std.stdio;
    writeln(arg[]);
}
void main()
{
    const(char)[] greeting = "hello";
    hello(greeting.toDslice);
}
相关推荐
艾莉丝努力练剑3 分钟前
【Linux线程】Linux系统多线程(五):<线程同步与互斥>线程互斥
linux·运维·服务器·c语言·c++·学习·ubuntu
kyle~5 分钟前
FANUC机械臂---R寄存器
开发语言·c++·机器人·fanuc
kyle~16 分钟前
字节序---大端与小端
c++·机器人
charlie11451419122 分钟前
通用GUI编程技术——图形渲染实战(三十)——Direct2D几何体系统:从路径到命中测试
开发语言·c++·windows·信息可视化·c·图形渲染·win32
-许平安-28 分钟前
MCP项目笔记十二(RAG-MCP)
c++·笔记·llm·rag·mcp
xiaoye-duck31 分钟前
【C++:C++11】核心进阶:C++11引用折叠、完美转发与可变参数模板实战详解
开发语言·c++·c++11
And_Ii11 小时前
LCR 168. 丑数
c++
CoderMeijun11 小时前
C++ 时间处理与格式化输出:从 Linux 时间函数到 Timestamp 封装
c++·printf·stringstream·时间处理·clock_gettime
tankeven15 小时前
HJ176 【模板】滑动窗口
c++·算法
OxyTheCrack15 小时前
【C++】一文详解C++智能指针自定义删除器(以Redis连接池为例)
c++·redis