嵌入式必问面经

1.知道动态链接与静态链接吗?两者有什么区别
动态链接和静态链接的区别:

动态链接:

在程序运行时进行链接,加载共享库文件。
节省空间,可多个程序共享库文件。
灵活性高,可以动态加载不同版本的库文件。
维护方便,只需更新库文件本身。

静态链接:
在编译时进行链接,将库函数复制到可执行文件中。
独立的可执行文件,不依赖外部库文件。
可执行文件较大,可能会有冗余代码。
维护复杂,更新库函数需重新编译和分发可执行文件。
使用场景和优缺点:

动态链接适合节省资源、可升级和灵活性要求高的场景。但在运行时有一定开销。
静态链接适合独立部署和简化依赖关系的场景。但可执行文件较大且维护复杂。
2.C++编译时和C有什么不同,在c++中怎么用c?
C++与C在编译时的主要区别有以下几点:

由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。
语法和功能:C++相比C具有更多的语法和功能。C++引入了面向对象编程的概念,包括类、继承、多态等。此外,C++还提供了更多的库和工具,如标准模板库(STL)和异常处理机制等。
3.为什么要少使用宏?C++有什么解决方案?
在C++中,推荐尽量避免过多使用宏的原因有以下几点:

可读性差:宏通常使用简单的文本替换机制,在代码中展开为复杂的表达式或语句,导致代码可读性降低。
潜在的副作用:宏的使用可能导致潜在的副作用,比如多次求值、修改变量等,这可能导致意外行为和错误。
缺乏类型检查:宏不进行类型检查,因此在使用宏时需要自行确保类型匹配,否则可能导致运行时错误。
为了解决这些问题,C++提供了一些替代方案来减少宏的使用:

使用const和constexpr:C++中的const和constexpr关键字可以用于定义常量,避免了宏定义常量的麻烦,并且提供了类型安全和编译期计算的优势。
使用内联函数:C++的内联函数可以取代宏,以提高代码的可读性和类型安全性。内联函数在编译时展开,避免了宏带来的副作用和类型不匹配的问题。
使用模板:模板是C++的强大特性之一,可以实现类型安全的泛型编程。通过模板,可以避免使用宏进行代码的泛化。
全部评论
我嵌入式学的菜,但是又想干这行😂
点赞 回复 分享
发布于 2023-10-31 23:26 江西

相关推荐

我即大橘:耐泡王
点赞 评论 收藏
分享
4 23 评论
分享
牛客网
牛客企业服务