1. 前言
自从毕业后,好多年没用过C语言,大概只记得当时课本上的一些基础知识,用的更多的是MATLAB/CAPL等有专业倾向性的语言。最近工作中遇到一个问题:将CANOE与MATLAB/SIMULINK和C语言编译,从而进行联合仿真。而要用到DLL动态链接库和SIMULINK编译知识,所以从网上找一两个小例子重拾C/C++,来完成工作中的内容。网上找了一个小例子内容:
(1)实现Hello World;
(2)头文件.h和源文件.c/cpp的基本用法。
2.实现方法
2.1 Hello World的实现
![134e20dce82653727cb62c7724a1db06.png](https://i-blog.csdnimg.cn/blog_migrate/4c89270b323bcc60d35e2ce54776cb18.jpeg)
直接新建一个控制台应用程序,然后会出一个int main(void){...return 0}; 主函数。这个主函数对应的文件是main.c, 注意.c说明了这是一个c语言函数,而不是c++.(.c说明是基于c语言的程序;.cpp说明此次是基于c++格式,这个整个程序编写过程中涉及到的库文件等都要保持一致)。
![695245667cb35759df258e0efb8ad169.png](https://i-blog.csdnimg.cn/blog_migrate/0034daf34677cdb9cdd974773360d773.jpeg)
#include <stdio.h>
#include "addfun1.h"// must include this head name,to call addfun1 in this .c resource file.
int main(void)
{
int z;
printf("hello world!"); //this sub function was defined and stored in stdio.h-stdio.cc file.
z = addfun1(2,11);//Call self define function int addfun1(int x, int y);
printf("Result=%d",z);
//getchar();
return 0;
}
code说明:
2.2自定义库文件.h/.c/.cpp进行调用
(1)C语言自己内部定义的库的include用<>,而自己定义的要用"";而printf()就是stdio库中的函数。
(2)printf(),是c的打印,其数据类型是嵌在前面的“stringcode%d”中的;cout才是c++的打印;
//.h define file
#ifndef _addfun_
#define _addfun_
int addfun1(int x,int y);
#endif
code说明:
(1)头文件的定义,直接在资源管理器那进行插入空间文档就好,但要注意,预编译这三行是必须的;头文件的内容放在define 和 endif中间;
(2)头文件的内容,主要是进行函数名和类名等的基本声明;具体的实现,要放在对应的源文件.c和.cpp中;
#include
code说明:
(1)自定义库的内容实现主要放在.c/.cpp文件中;
(2).h name的include,对应的源文件和主函数放口文件的最前面都要进行包含操作。
3.运行结果
![6ff1cea8a27cc87d59b14dc509952fc5.png](https://i-blog.csdnimg.cn/blog_migrate/997b189bff7b0a3c3af20ead9d70b211.jpeg)
4.错误分析
![b6c8ba14f3cf5c3073f8d73b30cd55dc.png](https://i-blog.csdnimg.cn/blog_migrate/03c3a0216392f804fee6d7bf0fe901e5.png)
出现编译不成功,显示错误为这个自定义的库函数无法进行识别,说明预编译失败;
![65288b0fced752d4c29bb878f196819f.png](https://i-blog.csdnimg.cn/blog_migrate/b77405b3d43903cd4379a0a0df599c94.png)
原因是:主函数所在文档是.c,说明这是个c语言函数;而自定义的库为.cpp,对应的是c++;两者改成一致即可。都是.cpp或者都是.c即可编译运行。