`
yaojingguo
  • 浏览: 208150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Inline Functions in C++

阅读更多

================

non-inline functions

================

 

For non-inline functions, if the prototype does not change, often the files that use the function need not be recompiled.

 

lib.cpp

 

#include <stdio.h>

void show(int i) {
  printf("show %d using style 1\n", i);
}
 
main.cpp
void show(int i);

int main(int argc, const char *argv[]) {
  show(100); 
  return 0;
}
$ g++ -c -fPIC lib.cpp
$ g++ -fPIC -shared -Wl,-soname,libref.so -o libref.so lib.o
$ g++ -c main.cpp
$ g++ -o main main.o -lref -L.
$./main
show 100 using style 1

Change printf("show %d using style 1\n", i); to printf("show %d using style 2\n", i);

$ g++ -c -fPIC lib.cpp
$ g++ -fPIC -shared -Wl,-soname,libref.so -o libref.so lib.o
$ ./main
show 100 using style 2

 

================

inline functions

================

lib.h

#include <stdio.h>

inline void show(int i) {
  printf("show %d using style 1\n", i);
}

 caller1.cpp

#include "lib.h"

void call1() {
  show(100);
}

 caller2.cpp

#include "lib.h"

void call2() {
  show(100);
}

 main.cpp

xtern void call1();
extern void call2();
int main() {
  call2();
  call1();
}

$ g++ -c *.cpp

$ g++ -o main *.o

$ ./main

show 100 using style 1

show 100 using style 1


Now change  printf("show %d using style 1\n", i); to printf("show %d using style 2\n", i);

For the following commands:

$ g++ -c caller1.cpp
$ g++ -o main *.o
$ ./main

The result is

show 100 using style 2

show 100 using style 2

 

For the following commands:

$ g++ -c caller2.cpp
$ g++ -o main *.o
$ ./main

The result is

show 100 using style 1

show 100 using style 1


 
分享到:
评论

相关推荐

    Thinking in C++.pdf

    - 内联函数(Inline Functions):解释了内联函数的工作原理及应用场景。 - 引用(References):讨论了引用与指针的区别及其在实际编程中的作用。 - 运算符重载(Operator Overloading):介绍了如何自定义...

    Thinking in C++ 2nd Edition

    此外,深入探讨了内联函数(Inline Functions)、运算符重载(Operator Overloading)和动态内存管理(Dynamic Memory Allocation),这些都是C++高级特性的关键部分。 对于C++的输入/输出系统(I/O Streams),书...

    Thinking in c++2 C++编程思想

    8. **内联函数和宏(Inline Functions and Macros)**:内联函数可以减少函数调用的开销,而宏是预处理器的一种特性,但过度使用可能导致问题。理解何时使用它们以及其潜在风险非常重要。 9. **C++11及以后的更新**...

    Think in C++ 英文版(含卷一、卷二)

    3: The C in C++ 4: Data Abstraction 5: Hiding the Implementation 6: Initialization & Cleanup 7: Function Overloading & Default Arguments 8: Constants 9: Inline Functions 10: Name Control 11: ...

    C++编程思想 Thinking in C++

    - **内联函数(Inline Functions)**:本书详细介绍了内联函数的概念及其在优化性能方面的应用。 - **引用(References)**:讲解了引用的定义、用法以及它与指针的区别。 - **运算符重载(Operator Overloading)**:通过...

    think in C++ 英文版

    内联函数(Inline Functions) 内联函数是C++中一种特殊类型的函数,它的目的是为了提高程序的执行效率。当编译器遇到内联函数时,它会将函数体嵌入到每个调用该函数的地方,从而避免了函数调用所带来的开销。然而,...

    Thinking in C++(C++编程思想) 2nd Edition 卷1卷2

    - **内联函数(Inline Functions)**:探讨了内联函数的工作原理、优点和局限性,以及何时应该使用内联函数。 - **引用(References)**:详细讲解了C++中的引用类型,包括其与指针的区别、用途以及最佳实践。 - **...

    Thinking in c++ 2nd V two

    - **内联函数(Inline Functions)**:介绍如何正确使用内联函数来优化性能。 - **引用(References)**:探讨引用的用法及其与指针的区别。 - **运算符重载(Operator Overloading)**:解释如何以及何时重载运算符。 ...

    Thinking In C++ 2ndED-Vol1 PDF

    内联函数(inline functions) 内联函数是C++中优化性能的重要手段之一。本书提供了关于何时以及如何使用内联函数的指导,帮助读者理解其工作原理及最佳实践。 #### 4. 引用(References) C++中的引用是一种...

    Thinking in C++, v1, 2nd edition

    #### 内联函数(Inline Functions) 内联函数是C++中一种特殊的函数类型,它的主要目的是提高程序的执行效率。通过使用内联函数,编译器可以在编译时将函数体直接嵌入到调用该函数的位置,避免了函数调用的开销。但...

    Thinking in C++, Volume 2 Practical Programming

    - **内联函数(inline functions)**: 内联函数可以提高程序的执行效率,但也会增加编译时间。 - **何时使用内联**: 通常适用于小型函数,尤其是那些频繁调用的函数。 - **内联与宏**: 内联函数相较于宏更安全,因为...

    Thinking in C++, 2nd -Two

    《Thinking in C++,2nd Edition》是一本深入学习C++编程语言的经典著作,由Bruce Eckel撰写。这本书分为两卷,卷二是对C++更深入的探讨,涵盖了C++的高级特性和实践。以下是对该书卷二部分的知识点详解: 1. **...

    Thinking_in_C++(C++编程思想)

    2. **内联函数(inline functions)**:探讨了何时以及如何有效地使用内联函数来优化代码性能。 3. **引用(references)**:详细解释了引用的概念及其与指针的区别,以及在实际编程中如何正确地使用引用。 4. **...

    Thinking in C++

    #### 内联函数(Inline Functions) 内联函数是在函数调用处插入函数体,从而避免了函数调用的开销。使用关键字`inline`声明函数时,编译器会尝试将函数内联,但这不是强制性的,最终是否内联取决于编译器优化。 #...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Header Files The #define Guard Header File Dependencies Inline Functions The -inl.h Files Function Parameter Ordering Names and Order of Includes Scoping Namespaces Nested Classes Nonmember, Static ...

    C++View C++View C++View

    6. **内联函数和函数重载(Inline Functions and Function Overloading)**:内联函数可以减少函数调用的开销,而函数重载则允许在同一作用域内定义多个同名但参数列表不同的函数。 7. **构造函数与析构函数...

    Practical C++ Programming C++编程实践

    Inline Functions Versus Normal Functions Case Study: Optimizing a Color-Rendering Algorithm Programming Exercises Answers to Chapter Questions 18. Operator Overloading Creating a Simple Fixed-Point ...

    thinking in c++

    内联函数(Inline Functions) 内联函数是一种特殊的函数,它的主要目的是减少函数调用带来的开销。通过使用`inline`关键字,编译器会尝试将函数体插入到每个调用该函数的地方,而不是执行传统的函数调用。这种方法...

    Thinking in C++ VolumeI.pdf

    内联函数 (Inline Functions) 这部分内容介绍了内联函数的概念及其优缺点: - **内联函数原理**:解释了内联函数是如何在编译时直接嵌入调用处的。 - **性能考量**:讨论了内联函数对于提高程序性能的影响。 #####...

Global site tag (gtag.js) - Google Analytics