– 作者 Allen 轉載請註明出處
微信公衆號「炫色Allen」(微信號:Allen5G)
c++是強類型的語言,類型來不得一點含糊
7-1:函數重載 vs 函數指針
#include <stdio.h>
#include <string.h>
int func(int x)
{
return x;
}
int func(int a, int b)
{
return a + b;
}
int func(const char* s)
{
return strlen(s);
}
typedef int(*PFUNC)(int a);
int main(int argc, char *argv[])
{
int c = 0;
PFUNC p = func;
c = p(1);
printf("c = %d\n", c);
return 0;
}
實際輸出爲1,說明選擇標準是指針參數類型決定的
得出幾個結論
這樣的強制類型轉換才行,否則編譯器也不知道你說的是哪個
C到c++ 過度
爲的是c++調用之前C語言的函數(主要是很多庫是收費的,貿然不支持損失很大的)
那麼如何保證一段C代碼只會被C的方式編譯呢?
解決方式:
實驗7-2 C++調用C
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "add.h"
#ifdef __cplusplus
}
#endif
int main()
{
int c = add(1, 2);
printf("c = %d\n", c);
return 0;
}
函數add.c
#include "add.h"
int add(int a, int b)
{
return a + b;
}
add.h
int add(int a, int b);
簡化爲模板就是:只要在區域內添加就可以按照C的方式進行編譯
反推一下:C語言調用c++的函數
總結: