c++ 杂项

--------------------------------------------------------------------------------
1. 如何使类的成员函数作为回调函数
--------------------------------------------------------------------------------
c++成员函数需要传递this 指针,从而实现一个成员函数为所有不同对象服务
要使成员函数成为回调函数,必须解决this 指针问题。
声明一个非成员函数为回调函数, 让某个参数为this 指针。

--------------------------------------------------------------------------------
2. const 修饰的元素
--------------------------------------------------------------------------------
const char *p=NULL;
const char *p1="abc";
const char *p1="123";
p = p1;
p = p2;
如上写法,并不是说不能改变const 指针, 而是不能改变const 指针所指内容。
const 修饰的是*

char * const p="123";  则p 所指位置不能再改变。
const 修饰的是 p 而不是 *;
--------------------------------------------------------------------------------
3. c++比c在编译,连接时进行了更加严格的检查.

--------------------------------------------------------------------------------

这个概念是我是知道的,例如更加严格的数据类型检查,包括指针类型检查等.

还有另一种情况,将c在连接期发现的错误,提到了编译器. 举例如下:

 

#include <stdio.h>
int main()
{
	weiweiwei(100);
	return 0;
}


这段代码,存成main.c , 编译可通过,连接不通过.

 

 

 

$ gcc -c -o main.o main.c
$ gcc -o main main.o
main.o: In function `main':
main.c:(.text+0xf): undefined reference to `weiweiwei'
collect2: error: ld returned 1 exit status
编译通过说明c语言认为, 没有函数原型的函数默认是存在的, 你必需要自己保证传递传递参数正确.

到连接时,它会从众多obj文件或者库文件中找到这个名字把它连接在一起.

把这段代码存成main.cpp, 编译直接通不过, 为什么?说你函数原型未声明.

$ g++ -c -o main.o main.cpp
main.cpp: In function ‘int main()’:
main.cpp:4:15: error: ‘weiweiwei’ was not declared in this scope
  weiweiwei(100);

由此可见,c++更加的严格, 其实也更合理.

c 更加宽泛一些,允许你不声明就使用, 不过正确性由你自己保证.

但如果你先声明了类型,再调用,c编译器也能保证你调用参数的正确性.

本贴主要是提示原来c可以不声明就调用, 看到有些代码是这样的(倒是简洁),甚是诧异,才一探究竟!

 

--------------------------------------------------------------------------------

4. 关闭gcc 的警告语法

--------------------------------------------------------------------------------

我使用如下的语句.

//诊断-忽略:(关闭警告)
#pragma  GCC diagnostic ignored  "-Wunused-variable"
#pragma  GCC diagnostic ignored  "-Wunused-parameter"
#pragma  GCC diagnostic ignored  "-Wunused-but-set-variable"

--------------------------------------------------------------------------------
5. C++中include-what-you-use(iwyu)去除多余头文件

--------------------------------------------------------------------------------

ubuntu18 中安装方法:

sudo apt-get install iwyu

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值