主页 > 电脑硬件  > 

[NKU]C++基础课(二)---externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、

[NKU]C++基础课(二)---externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、

一、extern "C"  (没看懂)

extern "C" 是 C++ 语言中的一个特性,用于在 C++ 代码中声明使用 C 语言链接的变量或函数。这样做的目的主要是为了实现 C++ 代码与 C 代码之间的互操作性。 C++ 支持函数重载,而 C 不支持,因此编译器会为 C++ 中的同名函数生成不同的符号名(通常称为名称修饰或名称改编),以区分不同参数列表的函数。 但是,C 语言编译器生成的符号名则相对简单,不包含函数参数类型的信息。 这就导致了直接使用 C++ 编译器编译的代码无法与 C 语言编译器编译的代码进行链接,除非采取一些措施。 extern "C" 正是用来解决这个问题的。通过在 C++ 代码中声明 extern "C",可以告诉 C++ 编译器这部分代码应该按照 C 语言的规则进行编译和链接,即不进行名称修饰。

extern "C" 只能用于 C++ 代码中。C 语言本身不支持这一语法。在 C++ 代码中调用 C 语言代码时,通常需要确保 C 语言代码是按照 C 标准编译的,而不是 C++。 这通常意味着你需要使用 C 编译器(如 gcc)而不是 C++ 编译器(如 g++)来编译 C 语言代 码。 extern "C" void myFunction();

【C++基础】externC_哔哩哔哩_bilibili 下面是视频教程 // 如果前面有 #ifdef __cplusplus 则这里需要对应的 #endif 来结束条件编译块 C的头文件 mallcStr.h. (插入硬盘的插头)

#include<stdio.h> #include<stdlib.h> char* func(int, char*);

mallocStr.c (插入硬盘的主体)

#define _CRT_SECURE_NO_WARNINGS #include"mallocStr.h" //使用malloc动态分配内存 char* func(int size, char *str){ char* p = malloc(size); strcpy(p, str); return p; }

main.cpp  (电脑主机)

#include<iostream> using namespace std; #ifdef __cplusplus // 这里是C++环境下的(extern "C"块)代码开始 extern "C" { #endif #include"mallocStr.h" #ifdef __cplusplus }// 这里是C++环境下的代码结束 #endif int main(){ char str[] = "C++"; char* p = func(sizeof(str)+1, str); cout << p << endl; free(p); return 0; }

二、强制类型转换

MustTypeTransfer.cpp

#include<iostream> using namespace std; int main(){ // 1.static_cast<type>(expression) // 常类型转换、基本类型转换、任意类型转换、空指针、类 }

标签:

[NKU]C++基础课(二)---externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“[NKU]C++基础课(二)---externC、强制类型转换、类与对象、面向对象程序设计语言、对象创建和使用、