嵌入式学习day02

每日面试题

1. 如何避免头文件被重复包含?
利用条件编译来避免头文件被重复包含。条件编译由#ifndef #define #endif组成,例如:

#ifndef MY_HEADER_FILE_H  //检查是否定义了宏MY_HEADER_FILE_H,如果没有,进入下一条语句,如果已经定义了,不会进入条件编译模块
#define MY_HEADER_FILE_H  //检查没有定义宏,在此处定义。紧跟在ifndef后面以确保宏只能被定义一次
  
// 头文件的内容  
// ...  
  
#endif MY_HEADER_FILE_H	//结束条件编译块

2. static关键字的作用?
①定义全局静态变量:在全局变量前加上static,这个全局变量就变成了全局静态变量。这样的变量只能在定义它的源文件中可见,不能在其他源文件中通过extern关键字访问。此外,如果没有显式地初始化,其默认值为0
②定义局部静态变量:保持变量持久,存储在静态存储区,会一直存在于程序执行期间,普通局部变量会在函数返回时消失。在函数调用的后续迭代中,静态局部变量的值不会被重置或再次初始化,除非在函数内部显式地修改它。
③定义静态函数:static修饰的函数只能在其定义的文件中被调用,而不能被其他文件调用。这有助于隐藏函数的实现细节,并提供了一种命名空间控制机制。
总结:最主要的作用是限制数据的作用域(隐藏),其次可以延长数据生命周期,且具备持久性和默认值0。

file1:

#include <stdio.h>  
  
// 定义一个全局静态变量  
static int global_static_var = 42;  
  
// 定义一个全局静态函数  
static void static_function() {  
    printf("This is a static function in file1.c\n");  
}  
  
void file1_function() {  
    printf("The value of global_static_var is: %d\n", global_static_var);  
    static_function(); // 可以调用同一文件中的静态函数  
}

file2:

#include <stdio.h>  
  
extern int global_static_var; // 尝试外部引用全局静态变量,但会失败  
extern void static_function(); // 尝试外部引用全局静态函数,但会失败  
  
void file2_function() {  
    // 下面的代码会导致编译错误,因为 global_static_var 和 static_function 是隐藏的  
    // printf("The value of global_static_var is: %d\n", global_static_var);  
    // static_function();  
}

每日算法

给出一个字符串,判断字符串中的元素是否全都不同,若是输出true,若不是输出false

class Solution {
public:
    bool isUnique(string astr) {
        for(int i=0;i<astr.size();i++){
            for(int j=i+1;j<astr.size();j++){
                if(astr[i]==astr[j]) return false;
            }
        }
        return true;
    }
};
### CSS伪类选择器的具体用法 CSS伪类选择器是一种用于匹配元素特定状态的选择器,它使得开发者可以基于用户的交互行为或者页面结构的变化来定义样式。以下是常见的几种伪类选择器及其具体用法和示例代码。 #### `:link` 和 `:visited` `:link` 用于未访问过的链接,而 `:visited` 则针对已访问过的链接。这两种伪类通常一起使用以区分不同状态下的超链接颜色或其他样式[^3]。 ```css a:link { color: blue; } a:visited { color: purple; } ``` #### `:hover`, `:active`, and `:focus` 这些伪类分别表示鼠标悬停、点击激活以及获得焦点的状态。它们常被用来增强用户体验,比如按钮高亮显示或输入框聚焦时的效果[^3]。 ```css button:hover { background-color: lightgray; } button:active { transform: scale(0.98); } input:focus { outline: 2px solid green; } ``` #### `:focus-within` 当某个容器内的子元素获取到焦点时,该容器会应用此伪类所指定的样式。这对于表单控件特别有用[^3]。 ```css div:focus-within { border: 2px dashed orange; } ``` #### `:target` 如果一个URL指向了一个ID,则带有相应ID的HTML元素将成为目标元素,并可由`:target`伪类选中并施加特殊样式。 ```css section:target { background-color: yellow; } ``` #### `:root` `:root` 表示文档的根元素,在 HTML 中总是指代 `<html>` 元素。它可以作为全局变量的作用域起点[^3]。 ```css :root { --main-bg-color: white; } body { background-color: var(--main-bg-color); } ``` #### `:checked` 适用于单选按钮 (`<input type="radio">`) 或复选框 (`<input type="checkbox">`) 被选中后的样式调整[^3]。 ```css label input[type=checkbox]:checked + span { text-decoration: line-through; } ``` 以上就是部分常用CSS伪类选择器的功能介绍及其实现方式的例子。利用好这些工具可以帮助构建更加动态且互动性强的网站界面。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值