cpp 学习笔记

1 篇文章 0 订阅
1 篇文章 0 订阅

static成员

类中的static成员只能定义一次,因此定义应该放在类的非内联函数定义文件中,并且不应该放在类的成员函数或构造函数中(无法确保只定义一次)
例如:

//Test.h
class Test{
    static string field;
    void init();
}

//Test.cpp
string Test::field = "";//正确定义
void init(){
    string Test::field = ""; //错误定义,编译出错
}

makefile

加了-g依然报No debugging symbols in gdb

在编写makefile时候,使用了.c.o:这条命令。

objects=main.o  setup.o
main : $(objects)   
    g++  -g -o $@ $^ -l pbc -l gmp
.c.o: #改成.cpp.o:即可正常产生调试信息
    g++  -g -std=c++11 -c  $< -l pbc -l gmp 

实际上上述写法编译cpp会导致-g参数没有被翻译成功,我也不知道为什么。(有空查查看)

emcas company无法自动补全头文件

一开始这么配置company-backends,总是无法自动补全头文件,但是用M-x company-c-headers就可以补全。
灵机一动,把company-c-headers放company-irony前面,可以正常补全了。
顺便默认的company补全最小前缀是3(company-minimum-prefix-length),我改成1了,但实际貌似没太大影响。

(defun custom-c/cpp-company ()
  (custom-set-variables
   '(company-backends
     (quote
      ( company-irony company-gtags company-c-headers company-files company-cmake company-clang )))
      ;;正确顺序如下,可能是company-irony阻塞了company-c-headers
      ;;( company-c-headers company-irony company-gtags company-files company-cmake company-clang )))
   '(company-idle-delay 0.1)
   '(company-minimum-prefix-length 1)   
   )
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值