首页

基本教程

视频教程

其它

d

首页

t推荐学习

基本教程

视频教程

其它

代码规范

参考

参考

插件框架实现

源码

插件框架设计

动态库加载类
插件加载配置
插件基类
插件管理类

2018/8/31 3:06:28
我的手机 2018/8/31 3:06:28
https://blog.csdn.net/gongdileidechouzhu/article/details/78808557

我的手机 2018/8/31 3:07:38
https://blog.csdn.net/gongdileidechouzhu/article/details/78808557
10:25:57
我的手机 2018/9/5 10:25:57
https://blog.csdn.net/Hellboy/article/details/347636?utm_source=jiancool
10:30:15
我的手机 2018/9/5 10:30:15
https://blog.csdn.net/bao_bei/article/details/73840674

我的手机 2018/9/5 10:31:01
https://blog.csdn.net/rabbit729/article/details/5629108

https://blog.csdn.net/calmreason/article/details/52447343

https://blog.csdn.net/wenzhou1219/article/details/50866467

https://wetest.qq.com/cloud/index.php/index/TMM

##

LZ的这个错误是典型的链接错误,#ifndef 加在头文件重是为了保证类的头文件在一个.cpp文件中被多次引用后会不会出现重复定义的问题,注意,只是防止在一个.cpp文件中被多次引用
如果是C++,可以对头文件的函数定义加inline或者static表明函数是在线或者静态的,这样编译器就可以自行解决重复定义的问题。
如果是C,则只能通过头文件函数定义加static来表明函数为静态,这样连接器不会报错。
正确的做法应该是只在头文件中声明,而真正的定义放到源文件中,这样不管哪个源文件包含了头文件,都不会有问题,因为定义的地方只有一个,链接的时候会找到的。

调试

#if defined(WIN32) && defined (DEBUG)
#define OUTLOOK(format, …)
do{
char lBuffer[1024] = {0};
sprintf(lBuffer, format”\n”, ##__VA_ARGS
);
OutputDebugString(lBuffer);
}while(0)
#else
#define OUTLOOK(format, …) (0)
#endif

侵入式与非侵入式接口设计

其它

推荐书籍

  • 从程序员到项目经理

你会写软件开发文档吗?
软件开发中的文档和分类
软件开发文档

DOP基本教程

dd

java设计模式基本教程

c++设计模式

基本教程

视频教程

其它

参考

其它

java设计模式基本教程


23种设计模式

创建型模式


其它模式

设计模式推荐书籍

## 参考

总结

什么是接口实现分离

,接口与实现分离.实现有改动时引用cpp不需要重新编译

## 

linux man c++

参考

cpp11

##