C总结

作者: 我在等你回复可你没回 | 来源:发表于2020-09-30 10:58 被阅读0次

extern与include的差别

都可以引入函数,但是extern呢,引入范围更小,只需要把自己需要的函数引进来。而include会把整个头文件的函数引进来

main.c中引入其他函数,一定要include或者extern引用进来吗?

毁三观!不需要!!直接写就行了。只会给你类似下面一个警告,说你在搞隐式调用,程序一样可以跑的!!只要你在任何一个c函数有实现就可以了。

implicit declaration of function 'tcpecho_init_'; did you mean 'tcpip_init'?

static作用是什么?

1.静态变量,随着程序毁灭才毁灭
2.只在本文件有效,其他文件不能调用。同样可以修饰函数,修饰函数时,函数不能被外部调用。

如何根据一个地址取取地址里面的值呢?

int result =*(int *)addr;
原理就是,先通过(int )把addr先变成一个int指针,然后通过把地址中存的值取出来。

C语言单引号和双引号的区别

单引号代表字符,双引号代表字符串。
如果 char test = "A";结果会怎样呢?
结果就是把字符串A的地址,阶段后赋值给test。所以是不可预测的。

怎么定义函数宏?

#define COUNTOF(data) sizeof(data)/sizeof(*data)
#define DOSOMETHING()     HAL_UART_Transmit(&huart1, (uint8_t *)"abc", 3,0xFFFF);  

可以在头文件中定义变量吗?

不可以,以为这个头文件可能被多次include,导致变量重复定义。
参考:https://blog.csdn.net/baidu_35679960/article/details/79200865

extern "C" 有什么用

用来把一个函数用C的方式编译。C++和C的编译出来的符号是不一样的。因为C++支持函数的重载。
主要来用在头文件函数声明前进行修饰。
在C++调用C库的就用extern "C"了,不然符号就对不上了。
但是我发现很多C++的库也有extern "C"了,这个是否有问题呢?其实应该也没啥问题,只需要保持实现方和调用方都用同一个符号就行了。

为了保持库的头文件一致。我们常常能看到头文件里面会加入这样的宏判断。

ifdef __cplusplus

extern "C" {

endif

int add(int a, int b);

ifdef __cplusplus

}

endif

这就能实现C库能被C++调用,并且头文件是同一个,而不用单独起一个头文件让外部C++库使用。

相关文章

网友评论

      本文标题:C总结

      本文链接:https://www.haomeiwen.com/subject/vhduuktx.html