{"id":1151,"date":"2025-07-15T10:53:32","date_gmt":"2025-07-15T02:53:32","guid":{"rendered":"https:\/\/beijian99.top\/?p=1151"},"modified":"2025-07-15T10:54:57","modified_gmt":"2025-07-15T02:54:57","slug":"%e5%a6%82%e4%bd%95%e5%b0%86c%e4%bb%a3%e7%a0%81%e5%8c%85%e8%a3%85%e6%88%90c%e6%8e%a5%e5%8f%a3","status":"publish","type":"post","link":"https:\/\/beijian99.top\/?p=1151","title":{"rendered":"\u5982\u4f55\u5c06C++\u4ee3\u7801\u5305\u88c5\u6210C\u63a5\u53e3"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u5f15\u8a00<\/h2>\n\n\n\n<p>\u5728\u6df7\u5408\u8bed\u8a00\u7f16\u7a0b\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u8ba9\u4e0d\u652f\u6301C++\u7684\u8bed\u8a00\uff08\u5982Go\u3001Python\u7b49\uff09\u8c03\u7528C++\u4ee3\u7801\u3002\u7531\u4e8eC++\u7684\u590d\u6742\u6027\uff08\u540d\u79f0\u4fee\u9970\u3001\u7c7b\u673a\u5236\u3001\u5f02\u5e38\u5904\u7406\u7b49\uff09\uff0c\u76f4\u63a5\u8c03\u7528\u901a\u5e38\u4e0d\u53ef\u884c\u3002\u672c\u6587\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u5c06C++\u4ee3\u7801\u5305\u88c5\u6210\u7eafC\u63a5\u53e3\uff0c\u4f7f\u5176\u4ed6\u8bed\u8a00\u53ef\u4ee5\u901a\u8fc7C\u517c\u5bb9\u7684ABI\u6765\u8c03\u7528C++\u529f\u80fd\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"200\" height=\"200\" src=\"https:\/\/beijian99.top\/wp-content\/uploads\/2025\/07\/image-13.png\" alt=\"\" class=\"wp-image-1153\" srcset=\"https:\/\/beijian99.top\/wp-content\/uploads\/2025\/07\/image-13.png 200w, https:\/\/beijian99.top\/wp-content\/uploads\/2025\/07\/image-13-150x150.png 150w\" sizes=\"auto, (max-width: 200px) 100vw, 200px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u57fa\u672c\u539f\u7406<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e3a\u4ec0\u4e48\u9700\u8981\u5305\u88c5\uff1f<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u200b<strong>\u200b\u540d\u79f0\u4fee\u9970(Name Mangling)\u200b<\/strong>\u200b\uff1aC++\u652f\u6301\u51fd\u6570\u91cd\u8f7d\uff0c\u7f16\u8bd1\u5668\u4f1a\u5bf9\u51fd\u6570\u540d\u8fdb\u884c\u4fee\u9970<\/li>\n\n\n\n<li>\u200b<strong>\u200bthis\u6307\u9488\u200b<\/strong>\u200b\uff1a\u6210\u5458\u51fd\u6570\u9690\u542b\u7684this\u53c2\u6570\u5728C\u4e2d\u4e0d\u5b58\u5728<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u5f02\u5e38\u5904\u7406\u200b<\/strong>\u200b\uff1aC\u6ca1\u6709\u5f02\u5e38\u673a\u5236<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u6784\u9020\/\u6790\u6784\u200b<\/strong>\u200b\uff1aC\u65e0\u6cd5\u76f4\u63a5\u8868\u793a\u5bf9\u8c61\u7684\u751f\u547d\u5468\u671f\u7ba1\u7406<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u6a21\u677f\u548c\u91cd\u8f7d\u200b<\/strong>\u200b\uff1aC\u4e0d\u652f\u6301\u8fd9\u4e9b\u9ad8\u7ea7\u7279\u6027<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\u89e3\u51b3\u65b9\u6848<\/h3>\n\n\n\n<p>\u901a\u8fc7<code>extern \"C\"<\/code>\u521b\u5efaC\u517c\u5bb9\u63a5\u53e3\uff0c\u624b\u52a8\u5904\u7406\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5bf9\u8c61\u751f\u547d\u5468\u671f\uff08\u663e\u5f0f\u521b\u5efa\/\u9500\u6bc1\u51fd\u6570\uff09<\/li>\n\n\n\n<li>\u6210\u5458\u51fd\u6570\u8c03\u7528\uff08\u663e\u5f0f\u4f20\u9012this\u6307\u9488\uff09<\/li>\n\n\n\n<li>\u5f02\u5e38\u8f6c\u6362\uff08\u5c06\u5f02\u5e38\u8f6c\u4e3a\u9519\u8bef\u7801\uff09<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u8be6\u7ec6\u5305\u88c5\u6848\u4f8b<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6848\u4f8b1\uff1a\u7b80\u5355\u7c7b\u5305\u88c5<\/h3>\n\n\n\n<p>\u200b<strong>\u200b\u539f\u59cbC++\u7c7b\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ counter.hpp\nclass Counter {\npublic:\n    Counter(int init = 0) : count(init) {}\n    void increment(int by = 1) { count += by; }\n    int get() const { return count; }\n    ~Counter() = default;\n    \nprivate:\n    int count;\n};\n<\/pre><\/div>\n\n\n<p>\u200b<strong>\u200bC\u5305\u88c5\u63a5\u53e3\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ counter_c.h\n#ifdef __cplusplus\nextern &quot;C&quot; {\n#endif\n\ntypedef void* CounterPtr; \/\/ \u4e0d\u900f\u660e\u6307\u9488\u7c7b\u578b\n\nCounterPtr counter_create(int init);\nvoid counter_increment(CounterPtr ptr, int by);\nint counter_get(CounterPtr ptr);\nvoid counter_destroy(CounterPtr ptr);\n\n#ifdef __cplusplus\n}\n#endif\n<\/pre><\/div>\n\n\n<p>\u200b<strong>\u200b\u5b9e\u73b0\u6587\u4ef6\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ counter_c.cpp\n#include &quot;counter.hpp&quot;\n#include &quot;counter_c.h&quot;\n\nextern &quot;C&quot; {\n    CounterPtr counter_create(int init) {\n        try {\n            return new Counter(init);\n        } catch(...) {\n            return nullptr;\n        }\n    }\n    \n    void counter_increment(CounterPtr ptr, int by) {\n        auto counter = static_cast&lt;Counter*&gt;(ptr);\n        if (counter) counter-&gt;increment(by);\n    }\n    \n    int counter_get(CounterPtr ptr) {\n        auto counter = static_cast&lt;Counter*&gt;(ptr);\n        return counter ? counter-&gt;get() : -1;\n    }\n    \n    void counter_destroy(CounterPtr ptr) {\n        auto counter = static_cast&lt;Counter*&gt;(ptr);\n        delete counter;\n    }\n}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">\u6848\u4f8b2\uff1a\u5904\u7406\u7ee7\u627f\u548c\u591a\u6001<\/h3>\n\n\n\n<p>\u200b<strong>\u200bC++\u57fa\u7c7b\u548c\u6d3e\u751f\u7c7b\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ shapes.hpp\nclass Shape {\npublic:\n    virtual double area() const = 0;\n    virtual ~Shape() = default;\n};\n\nclass Circle : public Shape {\n    double r;\npublic:\n    Circle(double radius) : r(radius) {}\n    double area() const override { return 3.14159 * r * r; }\n};\n<\/pre><\/div>\n\n\n<p>\u200b<strong>\u200bC\u5305\u88c5\u63a5\u53e3\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ shapes_c.h\n#ifdef __cplusplus\nextern &quot;C&quot; {\n#endif\n\ntypedef void* ShapePtr;\n\nShapePtr circle_create(double radius);\ndouble shape_area(ShapePtr shape);\nvoid shape_destroy(ShapePtr shape);\n\n#ifdef __cplusplus\n}\n#endif\n<\/pre><\/div>\n\n\n<p>\u200b<strong>\u200b\u5b9e\u73b0\u6587\u4ef6\u200b<\/strong>\u200b\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ shapes_c.cpp\n#include &quot;shapes.hpp&quot;\n#include &quot;shapes_c.h&quot;\n\nextern &quot;C&quot; {\n    ShapePtr circle_create(double radius) {\n        try {\n            return new Circle(radius);\n        } catch(...) {\n            return nullptr;\n        }\n    }\n    \n    double shape_area(ShapePtr shape) {\n        auto s = static_cast&lt;Shape*&gt;(shape);\n        return s ? s-&gt;area() : -1.0;\n    }\n    \n    void shape_destroy(ShapePtr shape) {\n        auto s = static_cast&lt;Shape*&gt;(shape);\n        delete s;\n    }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001\u9ad8\u7ea7\u4e3b\u9898<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5f02\u5e38\u5904\u7406\u6700\u4f73\u5b9e\u8df5<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nextern &quot;C&quot; int safe_cpp_operation(\/* params *\/) {\n    try {\n        \/\/ \u8c03\u7528\u53ef\u80fd\u629b\u51fa\u5f02\u5e38\u7684C++\u4ee3\u7801\n        return 0; \/\/ \u6210\u529f\n    } catch(const std::exception&amp; e) {\n        \/\/ \u8bb0\u5f55\u9519\u8bef\u4fe1\u606f\n        return -1; \/\/ \u901a\u7528\u9519\u8bef\n    } catch(...) {\n        return -2; \/\/ \u672a\u77e5\u9519\u8bef\n    }\n}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">2. \u5185\u5b58\u7ba1\u7406\u7b56\u7565<\/h3>\n\n\n\n<p>\u200b<strong>\u200b\u65b9\u68481\uff1a\u5b8c\u5168\u7531\u8c03\u7528\u65b9\u7ba1\u7406\u200b<\/strong>\u200b<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ \u663e\u5f0f\u521b\u5efa\u548c\u9500\u6bc1\nvoid* obj = create_object();\nuse_object(obj);\ndestroy_object(obj);\n<\/pre><\/div>\n\n\n<p>\u200b<strong>\u200b\u65b9\u68482\uff1a\u5f15\u7528\u8ba1\u6570\u200b<\/strong>\u200b<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\nextern &quot;C&quot; {\n    void* create_object() {\n        return new RefCountedObject;\n    }\n    \n    void add_ref(void* obj) {\n        static_cast&lt;RefCountedObject*&gt;(obj)-&gt;addRef();\n    }\n    \n    void release(void* obj) {\n        auto o = static_cast&lt;RefCountedObject*&gt;(obj);\n        if (o-&gt;release() == 0) {\n            delete o;\n        }\n    }\n}\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">3. \u5904\u7406STL\u5bb9\u5668<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/\/ \u5305\u88c5vector&lt;int&gt;\u7684\u793a\u4f8b\nextern &quot;C&quot; {\n    typedef void* IntVectorPtr;\n    \n    IntVectorPtr int_vector_create() {\n        return new std::vector&lt;int&gt;;\n    }\n    \n    void int_vector_push_back(IntVectorPtr ptr, int value) {\n        auto vec = static_cast&lt;std::vector&lt;int&gt;*&gt;(ptr);\n        vec-&gt;push_back(value);\n    }\n    \n    \/\/ \u66f4\u5b89\u5168\u7684\u505a\u6cd5\u662f\u62f7\u8d1d\u6570\u636e\u5230C\u6570\u7ec4\n    int int_vector_copy_data(IntVectorPtr ptr, int* out, int max_size) {\n        auto vec = static_cast&lt;std::vector&lt;int&gt;*&gt;(ptr);\n        int count = std::min(max_size, (int)vec-&gt;size());\n        std::copy(vec-&gt;begin(), vec-&gt;begin() + count, out);\n        return count;\n    }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u5b9e\u9645\u5e94\u7528\uff1aGo\u901a\u8fc7CGO\u8c03\u7528<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: cpp; title: ; notranslate\" title=\"\">\n\/*\n#cgo LDFLAGS: -L. -lcounter\n#include &quot;counter_c.h&quot;\n*\/\nimport &quot;C&quot;\n\nfunc main() {\n    \/\/ \u521b\u5efa\u8ba1\u6570\u5668\n    counter := C.counter_create(10)\n    \n    \/\/ \u4f7f\u7528\u8ba1\u6570\u5668\n    C.counter_increment(counter, 5)\n    value := C.counter_get(counter)\n    fmt.Printf(&quot;Current value: %d\\n&quot;, int(value))\n    \n    \/\/ \u9500\u6bc1\n    C.counter_destroy(counter)\n}\n<\/pre><\/div>\n\n\n<p>\u7f16\u8bd1\u547d\u4ee4\uff1a<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\ng++ -fPIC -shared counter.cpp counter_c.cpp -o libcounter.so\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5e38\u89c1\u95ee\u9898\u4e0e\u89e3\u51b3\u65b9\u6848<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u200b<strong>\u200b\u5185\u5b58\u6cc4\u6f0f\u200b<\/strong>\u200b\uff1a\n<ul class=\"wp-block-list\">\n<li>\u786e\u4fdd\u6bcf\u4e2acreate\u90fd\u6709\u5bf9\u5e94\u7684destroy<\/li>\n\n\n\n<li>\u5728C\u63a5\u53e3\u6587\u6863\u4e2d\u660e\u786e\u6240\u6709\u6743\u89c4\u5219<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u7ebf\u7a0b\u5b89\u5168\u200b<\/strong>\u200b\uff1a<ul><li>\u5982\u679cC++\u5e93\u4e0d\u662f\u7ebf\u7a0b\u5b89\u5168\u7684\uff0c\u9700\u8981\u5728\u5305\u88c5\u5c42\u52a0\u9501<\/li><\/ul><code>static std::mutex g_mutex; extern \"C\" void thread_safe_op() { std::lock_guard&lt;std::mutex&gt; lock(g_mutex); \/\/ \u64cd\u4f5c\u5171\u4eab\u8d44\u6e90 }<\/code><\/li>\n\n\n\n<li>\u200b<strong>\u200b\u7c7b\u578b\u5b89\u5168\u200b<\/strong>\u200b\uff1a\n<ul class=\"wp-block-list\">\n<li>\u4f7f\u7528\u4e0d\u900f\u660e\u6307\u9488(void*)\u9690\u85cf\u5b9e\u9645\u7c7b\u578b<\/li>\n\n\n\n<li>\u6dfb\u52a0\u8fd0\u884c\u65f6\u7c7b\u578b\u68c0\u67e5\uff08\u5982\u679c\u9700\u8981\uff09<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u6027\u80fd\u8003\u8651\u200b<\/strong>\u200b\uff1a\n<ul class=\"wp-block-list\">\n<li>\u51cf\u5c11C\/C++\u8fb9\u754c\u8de8\u8d8a\u6b21\u6570<\/li>\n\n\n\n<li>\u6279\u91cf\u4f20\u8f93\u6570\u636e\u800c\u4e0d\u662f\u5355\u4e2a\u5143\u7d20<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u5de5\u5177\u8f85\u52a9<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u200b<strong>\u200bSWIG\u200b<\/strong>\u200b\uff1a\u81ea\u52a8\u751f\u6210\u5305\u88c5\u4ee3\u7801 <code>%module counter %{ #include \"counter.hpp\" %} %include \"counter.hpp\"<\/code><\/li>\n\n\n\n<li>\u200b<strong>\u200bCppSharp\u200b<\/strong>\u200b\uff1a\u4e13\u95e8\u4e3aC#\u8bbe\u8ba1\u7684\u5305\u88c5\u751f\u6210\u5668<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u624b\u52a8\u5305\u88c5\u200b<\/strong>\u200b\uff1a\u5bf9\u4e8e\u590d\u6742\u9879\u76ee\u66f4\u53ef\u63a7<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ed3\u8bba<\/h2>\n\n\n\n<p>\u5c06C++\u4ee3\u7801\u5305\u88c5\u4e3aC\u63a5\u53e3\u867d\u7136\u9700\u8981\u4e00\u5b9a\u5de5\u4f5c\u91cf\uff0c\u4f46\u8fd9\u662f\u5b9e\u73b0\u591a\u8bed\u8a00\u4e92\u64cd\u4f5c\u6027\u7684\u53ef\u9760\u65b9\u6cd5\u3002\u5173\u952e\u70b9\u5305\u62ec\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528<code>extern \"C\"<\/code>\u9632\u6b62\u540d\u79f0\u4fee\u9970<\/li>\n\n\n\n<li>\u7528\u4e0d\u900f\u660e\u6307\u9488\u8868\u793aC++\u5bf9\u8c61<\/li>\n\n\n\n<li>\u663e\u5f0f\u7ba1\u7406\u5bf9\u8c61\u751f\u547d\u5468\u671f<\/li>\n\n\n\n<li>\u59a5\u5584\u5904\u7406\u5f02\u5e38\u548c\u9519\u8bef<\/li>\n\n\n\n<li>\u8bbe\u8ba1\u6e05\u6670\u7684\u8d44\u6e90\u6240\u6709\u6743\u6a21\u578b<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u5f15\u8a00 \u5728\u6df7\u5408\u8bed\u8a00\u7f16\u7a0b\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u9700\u8981\u8ba9\u4e0d\u652f\u6301C++\u7684\u8bed\u8a00\uff08\u5982Go\u3001Python\u7b49\uff09\u8c03\u7528C++\u4ee3\u7801\u3002\u7531\u4e8eC++\u7684 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1153,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[153],"tags":[161],"class_list":["post-1151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cpp","tag-cgo"],"_links":{"self":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1151"}],"version-history":[{"count":2,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1151\/revisions"}],"predecessor-version":[{"id":1154,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/posts\/1151\/revisions\/1154"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=\/wp\/v2\/media\/1153"}],"wp:attachment":[{"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beijian99.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}