{"id":113812,"date":"2026-06-06T00:00:11","date_gmt":"2026-06-05T18:30:11","guid":{"rendered":"https:\/\/www.guvi.in\/blog\/?p=113812"},"modified":"2026-06-06T00:00:13","modified_gmt":"2026-06-05T18:30:13","slug":"inline-functions-in-c","status":"publish","type":"post","link":"https:\/\/www.guvi.in\/blog\/inline-functions-in-c\/","title":{"rendered":"Inline Functions in C++: A Complete Guide"},"content":{"rendered":"\n<p>Every time your program calls a function, something happens behind the scenes.<\/p>\n\n\n\n<p>The CPU saves the current state, jumps to the function&#8217;s memory location, executes the code, then jumps back and restores everything it saved. For a tiny function called millions of times in a tight loop, that overhead adds up fast.<\/p>\n\n\n\n<p>Inline functions solve this. Instead of jumping to the function and back, the compiler pastes the function body directly at the call site. No jump. No state saving. Just the code, right where it is needed.<\/p>\n\n\n\n<p>This guide covers what inline functions are, how the compiler handles them, how they interact with classes and headers, when they help and when they hurt, and the mistakes that trip up even experienced C++ programmers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Quick TL;DR Summary<\/strong><\/h2>\n\n\n\n<ol>\n<li>This guide explains inline functions in C++, functions that request the compiler to replace each call with the function body directly at the call site, eliminating function call overhead for small frequently called functions.<br><\/li>\n\n\n\n<li>You will learn how the inline keyword works, why it is a suggestion rather than a guaranteed instruction, and why inline functions must be defined in header files to be visible across multiple translation units.<br><\/li>\n\n\n\n<li>The guide covers how inline functions interact with classes, why member functions defined inside a class body are implicitly inline, and how this makes getter and setter patterns cost nothing at runtime.<br><\/li>\n\n\n\n<li>Step-by-step examples show the difference between inline functions and macros, when inlining improves performance, when it causes code bloat that hurts cache performance, and how constexpr extends the concept further.<br><\/li>\n\n\n\n<li>You will understand the one definition rule exception that inline functions rely on, how C++17 inline variables solve the header variable problem, and the common mistakes that silently prevent inlining from working correctly.<\/li>\n\n\n\n<li><\/li>\n<\/ol>\n\n\n\n<div class=\"guvi-answer-card\" style=\"margin: 40px 0;\">\n\n  <div style=\"\n    position: relative;\n    background: linear-gradient(135deg, #f0fff4, #e6f7ee);\n    border: 1px solid #cfeedd;\n    padding: 26px 24px 22px 24px;\n    border-radius: 14px;\n    font-family: Arial, sans-serif;\n    box-shadow: 0 6px 16px rgba(0,0,0,0.05);\n  \">\n\n    <!-- Top accent -->\n    <div style=\"\n      position: absolute;\n      top: 0;\n      left: 0;\n      height: 6px;\n      width: 100%;\n      background: linear-gradient(to right, #099f4e, #6dd5a3);\n      border-radius: 14px 14px 0 0;\n    \"><\/div>\n\n    <!-- Title -->\n    <h3 style=\"\n      margin: 10px 0 12px 0;\n      color: #099f4e;\n      font-size: 20px;\n    \">\n      What Are Inline Functions in C++?\n    <\/h3>\n\n    <!-- Content -->\n    <p style=\"\n      margin: 0;\n      color: #2f4f3f;\n      font-size: 16px;\n      line-height: 1.7;\n    \">\n      Inline functions in C++ are functions declared with the <code>inline<\/code> keyword that suggest to the compiler that the function&#8217;s code should be inserted directly at each call site instead of performing a normal function call. This can reduce the overhead associated with function calls, such as parameter passing and stack operations, making small and frequently used functions more efficient. However, the <code>inline<\/code> keyword is only a request to the compiler, and the compiler may choose whether or not to inline the function based on optimization decisions.\n    <\/p>\n\n  <\/div>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Inline Functions Are and How They Work<\/strong><\/h2>\n\n\n\n<ol>\n<li><strong>The Cost of a Regular Function Call<\/strong><\/li>\n<\/ol>\n\n\n\n<p>When a program calls a function, the CPU pushes arguments onto the stack, saves the return address, jumps to the function&#8217;s location, executes it, and jumps back. For a function that adds two numbers, this overhead can take more instructions than the addition itself.<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>What the Compiler Does With Inline<\/strong><\/li>\n<\/ol>\n\n\n\n<p>When you mark a function inline and the compiler honors the request, it replaces every call with a copy of the function body.<\/p>\n\n\n\n<p><strong>Before inlining:<\/strong><\/p>\n\n\n\n<p>int result = square(5);<\/p>\n\n\n\n<p><strong>After inlining:<\/strong><\/p>\n\n\n\n<p>int result = 5 * 5;<\/p>\n\n\n\n<p>No function call happens at runtime. The computation is embedded directly in the calling code, eliminating call overhead and opening the door to further optimizations the compiler can apply when it sees the full body in context.<\/p>\n\n\n\n<ol start=\"3\">\n<li><strong>Inline Is a Request, Not a Command<\/strong><\/li>\n<\/ol>\n\n\n\n<p>The inline keyword is a hint the compiler is free to ignore. Modern compilers with optimization enabled routinely inline small functions automatically without the keyword, and refuse to inline large functions regardless of it.<\/p>\n\n\n\n<p>Understanding that inline is advisory rather than mandatory is essential to using it correctly.<\/p>\n\n\n\n<div style=\"background-color: #099f4e; border: 3px solid #110053; border-radius: 12px; padding: 18px 22px; color: #FFFFFF; font-size: 18px; font-family: Montserrat, Helvetica, sans-serif; line-height: 1.6; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); max-width: 750px;\">\n  <strong style=\"font-size: 22px; color: #FFFFFF;\">\ud83d\udca1 Did You Know?<\/strong>\n  <p style=\"margin-top: 14px; margin-bottom: 0;\">\n    Many programmers associate the <strong style=\"color: #FFFFFF;\">inline<\/strong> keyword in C++ with performance optimization, but its original purpose was actually related to the <strong style=\"color: #FFFFFF;\">One Definition Rule (ODR)<\/strong>. The keyword was introduced to allow functions defined in header files to appear in multiple translation units without causing linker errors. As compiler technology evolved, compilers began using inline functions as candidates for <strong style=\"color: #FFFFFF;\">call-site expansion<\/strong>, replacing function calls with the function body to reduce call overhead. Today, the primary language-level meaning of <strong style=\"color: #FFFFFF;\">inline<\/strong> is that a function may be defined in multiple translation units while still representing a single entity in the program. Whether the compiler actually performs inlining as an optimization remains entirely its decision.\n  <\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Syntax, Headers, and the One Definition Rule<\/strong><\/h2>\n\n\n\n<ol>\n<li><strong>Basic Inline Function Syntax<\/strong><\/li>\n<\/ol>\n\n\n\n<p>inline int square(int x) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return x * x;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>The inline keyword goes before the return type. The function definition must be visible at every point where it is called.<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>Why Inline Functions Belong in Header Files<\/strong><\/li>\n<\/ol>\n\n\n\n<p>A regular <a href=\"https:\/\/www.guvi.in\/hub\/cpp\/functions-in-cpp\/\" target=\"_blank\" rel=\"noreferrer noopener\">function<\/a> can be declared in a header and defined once in a source file. An inline function must have its full definition visible at every translation unit that uses it. Without seeing the body, the compiler cannot inline the call.<\/p>\n\n\n\n<p>\/\/ math_utils.h<\/p>\n\n\n\n<p>#ifndef MATH_UTILS_H<\/p>\n\n\n\n<p>#define MATH_UTILS_H<\/p>\n\n\n\n<p>inline int square(int x) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return x * x;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>inline bool is_even(int n) {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return n % 2 == 0;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>#endif<\/p>\n\n\n\n<p>Including this header in multiple source files does not violate the one definition rule because inline functions are explicitly exempt from it, provided all definitions are identical.<\/p>\n\n\n\n<p><strong>Read More: <\/strong><a href=\"https:\/\/www.guvi.in\/hub\/cpp\/cpp-language-features\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>What are C++ language features?<\/strong><\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Inline Functions in Classes<\/strong><\/h2>\n\n\n\n<ol>\n<li><strong>Member Functions Defined Inside the Class Body Are Implicitly Inline<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Any member function defined inside the class declaration is automatically inline without needing the keyword.<\/p>\n\n\n\n<p>class Rectangle {<\/p>\n\n\n\n<p>private:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double width;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double height;<\/p>\n\n\n\n<p>public:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;Rectangle(double w, double h) : width(w), height(h) {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double area() const {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return width * height;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double perimeter() const {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 2 * (width + height);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;bool is_square() const {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return width == height;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;}<\/p>\n\n\n\n<p>};<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>Getters and Setters as Inline Functions<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Simple accessors are the most common real-world use of implicit inline in <a href=\"https:\/\/www.guvi.in\/hub\/cpp\/what-is-cpp\/\">C++<\/a> classes.<\/p>\n\n\n\n<p>class Student {<\/p>\n\n\n\n<p>private:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;std::string name;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;int age;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double gpa;<\/p>\n\n\n\n<p>public:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;Student(std::string n, int a, double g)<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: name(n), age(a), gpa(g) {}<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;std::string get_name() const { return name; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;int get_age() const { return age; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double get_gpa() const { return gpa; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;void set_age(int a) { age = a; }<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;void set_gpa(double g) { gpa = g; }<\/p>\n\n\n\n<p>};<\/p>\n\n\n\n<p>Each getter and setter is one line. Function call overhead would dwarf the actual work. Making them implicitly inline by defining them inside the class body is standard <a href=\"https:\/\/www.guvi.in\/hub\/cpp\/examples-and-practice-exercises-in-cpp\/\" target=\"_blank\" rel=\"noreferrer noopener\">C++ practice<\/a>.<\/p>\n\n\n\n<ol start=\"3\">\n<li><strong>Defining Member Functions Outside the Class Body<\/strong><\/li>\n<\/ol>\n\n\n\n<p>For better separation of interface and implementation, you can define member functions outside the class and explicitly mark them inline. The definition still belongs in the header file.<\/p>\n\n\n\n<p>\/\/ circle.h<\/p>\n\n\n\n<p>class Circle {<\/p>\n\n\n\n<p>private:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double radius;<\/p>\n\n\n\n<p>public:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;Circle(double r);<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double area() const;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;double circumference() const;<\/p>\n\n\n\n<p>};<\/p>\n\n\n\n<p>inline Circle::Circle(double r) : radius(r) {}<\/p>\n\n\n\n<p>inline double Circle::area() const {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return 3.14159265 * radius * radius;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>inline double Circle::circumference() const {<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp;&nbsp;return 2 * 3.14159265 * radius;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<div style=\"background-color: #099f4e; border: 3px solid #110053; border-radius: 12px; padding: 18px 22px; color: #FFFFFF; font-size: 18px; font-family: Montserrat, Helvetica, sans-serif; line-height: 1.6; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); max-width: 750px;\">\n  <strong style=\"font-size: 22px; color: #FFFFFF;\">\ud83d\udca1 Did You Know?<\/strong>\n  <p style=\"margin-top: 14px; margin-bottom: 0;\">\n    The <strong style=\"color: #FFFFFF;\">C++ Core Guidelines<\/strong>, co-authored by <strong style=\"color: #FFFFFF;\">Bjarne Stroustrup<\/strong>, the creator of C++, strongly recommend <strong style=\"color: #FFFFFF;\">avoiding macros whenever possible<\/strong>. Modern C++ provides safer and more expressive alternatives for nearly every traditional macro use case, including <strong style=\"color: #FFFFFF;\">inline functions<\/strong>, <strong style=\"color: #FFFFFF;\">constexpr<\/strong>, and <strong style=\"color: #FFFFFF;\">templates<\/strong>. Unlike macros, these language features respect type checking, scoping rules, and compiler diagnostics, making code easier to debug and maintain. As a result, contemporary C++ codebases typically reserve macros for specialized tasks such as <strong style=\"color: #FFFFFF;\">conditional compilation<\/strong> and <strong style=\"color: #FFFFFF;\">include guards<\/strong>, while relying on modern language constructs for functionality that was historically implemented through function-like macros.\n  <\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Inline Functions vs Macros<\/strong><\/h2>\n\n\n\n<ol>\n<li><strong>Why Macros Were Used Before Inline<\/strong><\/li>\n<\/ol>\n\n\n\n<p>Before inline functions, programmers used preprocessor macros to avoid call overhead.<\/p>\n\n\n\n<p>#define SQUARE(x) ((x) * (x))<\/p>\n\n\n\n<p>#define MAX(a, b) ((a) &gt; (b) ? (a) : (b))<\/p>\n\n\n\n<p>Macros are textual substitution before compilation. They avoid overhead but create serious problems.<\/p>\n\n\n\n<ol start=\"2\">\n<li><strong>The Problems Macros Create<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>No type checking.<\/strong> SQUARE(&#8220;hello&#8221;) compiles without error and produces nonsense.<\/p>\n\n\n\n<p><strong>Multiple argument evaluation.<\/strong> SQUARE(x++) expands to ((x++) * (x++)), incrementing x twice and producing undefined behavior.<\/p>\n\n\n\n<p><strong>No scope.<\/strong> Macros pollute every file that includes them with no way to limit visibility.<\/p>\n\n\n\n<p><strong>Impossible to debug.<\/strong> Debuggers see the expanded text, not the macro name, making errors confusing.<\/p>\n\n\n\n<ol start=\"3\">\n<li><strong>How Inline Functions Fix All of These<\/strong><\/li>\n<\/ol>\n\n\n\n<p>inline int square(int x) { return x * x; }<\/p>\n\n\n\n<p>int x = 5;<\/p>\n\n\n\n<p>int result = square(x++);<\/p>\n\n\n\n<p>\/\/ x++ evaluated once, result is 25, x becomes 6<\/p>\n\n\n\n<p>Inline functions have full type checking, evaluate arguments exactly once, respect scope and namespaces, and appear correctly in debuggers. They are strictly better than macros for every use case macros were traditionally used for in <a href=\"https:\/\/www.guvi.in\/hub\/cpp\/\" target=\"_blank\" rel=\"noreferrer noopener\">C++<\/a>.<\/p>\n\n\n\n<p>To learn more about Inline Functions in C++, enroll in this <strong>HCL GUVI\u2019s <\/strong><a href=\"https:\/\/www.guvi.in\/courses\/programming\/c-plus-plus-beginners\/?utm_source=blog&amp;utm_medium=hyperlink&amp;utm_campaign=inline-functions-in-c-a-complete-guide\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>C++ Programming course <\/strong><\/a>designed and taught by industry experts. The course covers essential C++ concepts including inline functions, object-oriented programming, functions, classes, memory management, and more through hands-on exercises, assignments, and quizzes. With practical learning, self-paced modules, and a <strong>NASSCOM-approved industry-recognized certification<\/strong>, this course helps you build strong coding skills and real-world programming knowledge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Final Thoughts<\/strong><\/h2>\n\n\n\n<p>Inline functions in C++ solve two distinct problems: the one definition rule problem for functions in headers, and call overhead for small frequently called utilities.<\/p>\n\n\n\n<p>Understanding both purposes prevents the most common mistakes. Functions go in headers with inline not primarily for speed but to satisfy the linker across multiple translation units. Small hot functions get inline to eliminate measurable call overhead.<\/p>\n\n\n\n<p>Modern compilers are sophisticated enough that manual inline annotations rarely change performance on optimized builds. The keyword matters most for the one definition rule use case and for implicitly inlined class member functions that make accessor patterns cost nothing at runtime.<\/p>\n\n\n\n<p>Write small functions inside class bodies, put utility functions in headers with inline, use constexpr for compile-time mathematical functions, and measure before assuming inline made anything faster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQs<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1780373357310\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>1. Is the inline keyword guaranteed to make the compiler inline a function?<\/strong>\u00a0<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. It is a hint the compiler is free to ignore. Modern compilers inline small functions automatically without the keyword and ignore it for large or complex functions regardless of the annotation.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1780373363454\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>2. Why must inline functions be defined in header files?<\/strong>\u00a0<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The compiler needs to see the full body at every call site to inline the code. If the definition is only in a source file, other translation units cannot see it and cannot inline the call.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1780373371893\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>3. What is the difference between inline functions and macros?<\/strong>\u00a0<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Inline functions have type checking, evaluate arguments exactly once, respect scope, and appear correctly in debuggers. Macros have none of these properties and produce subtle bugs through multiple argument evaluation and lack of type safety.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1780373381148\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>4. Are member functions defined inside a class body automatically inline?<\/strong>\u00a0<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes. Any member function defined inside the class declaration is implicitly inline without needing the keyword, which is why defining small accessors inside the class body is standard C++ practice.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1780373390361\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><strong>5. When should I use constexpr instead of inline?<\/strong>\u00a0<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use constexpr for small mathematical functions that could be evaluated at compile time. constexpr functions are implicitly inline and additionally enable compile-time evaluation, making them strictly more powerful than inline alone for qualifying functions.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Every time your program calls a function, something happens behind the scenes. The CPU saves the current state, jumps to the function&#8217;s memory location, executes the code, then jumps back and restores everything it saved. For a tiny function called millions of times in a tight loop, that overhead adds up fast. Inline functions solve [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":114992,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[37],"tags":[],"views":"38","authorinfo":{"name":"Vishalini Devarajan","url":"https:\/\/www.guvi.in\/blog\/author\/vishalini\/"},"thumbnailURL":"https:\/\/www.guvi.in\/blog\/wp-content\/uploads\/2026\/06\/inline-functions-in-c-300x116.webp","jetpack_featured_media_url":"https:\/\/www.guvi.in\/blog\/wp-content\/uploads\/2026\/06\/inline-functions-in-c.webp","_links":{"self":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/113812"}],"collection":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/comments?post=113812"}],"version-history":[{"count":3,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/113812\/revisions"}],"predecessor-version":[{"id":114993,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/posts\/113812\/revisions\/114993"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media\/114992"}],"wp:attachment":[{"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/media?parent=113812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/categories?post=113812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.guvi.in\/blog\/wp-json\/wp\/v2\/tags?post=113812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}