在C和C++下声明函数指针的方式
2017-04-05 15:16
218 查看
在C的规范下,声明一个函数指针的方式如下:
//comm.h
#ifndef COMM_H
#define COMM_H
void test_print(const char*);
void(*console)(const char*);//在C的时候,这样写算作一个声明.
#endif//COMM_H
//comm.c[注意是.c不是.cpp]
#include "comm.h"
#include <stdio.h>
void test_print(const char* msg)
{
printf("%s", msg);
}
//main.c[注意是.c不是.cpp]
#include "comm.h"
#include <stdio.h>
//void(*console)(const char*) = NULL;//这一句话可以不要的.
int main()
{
if (console == NULL)
console = test_print;
console("I am working.\n");
return 0;
}
这样写是可以正常编译和运行的。
在C++的规范下,应该这样写:
//comm.h
#ifndef COMM_H
#define COMM_H
void test_print(const char*);
extern void(*console)(const char*);//在C++中,应当这样声明一个指针.
#endif//COMM_H
//comm.cpp
#include "comm.h"
#include <stdio.h>
void test_print(const char* msg)
{
printf("%s", msg);
}
//main.cpp
#include "comm.h"
#include <stdio.h>
void(*console)(const char*) = NULL;//函数指针的定义.
int main()
{
if (console == NULL)
console = test_print;
console("I am working.\n");
return 0;
}我在编译一个project时,因为这个问题耗费了一些时间,遂记录之。
//comm.h
#ifndef COMM_H
#define COMM_H
void test_print(const char*);
void(*console)(const char*);//在C的时候,这样写算作一个声明.
#endif//COMM_H
//comm.c[注意是.c不是.cpp]
#include "comm.h"
#include <stdio.h>
void test_print(const char* msg)
{
printf("%s", msg);
}
//main.c[注意是.c不是.cpp]
#include "comm.h"
#include <stdio.h>
//void(*console)(const char*) = NULL;//这一句话可以不要的.
int main()
{
if (console == NULL)
console = test_print;
console("I am working.\n");
return 0;
}
这样写是可以正常编译和运行的。
在C++的规范下,应该这样写:
//comm.h
#ifndef COMM_H
#define COMM_H
void test_print(const char*);
extern void(*console)(const char*);//在C++中,应当这样声明一个指针.
#endif//COMM_H
//comm.cpp
#include "comm.h"
#include <stdio.h>
void test_print(const char* msg)
{
printf("%s", msg);
}
//main.cpp
#include "comm.h"
#include <stdio.h>
void(*console)(const char*) = NULL;//函数指针的定义.
int main()
{
if (console == NULL)
console = test_print;
console("I am working.\n");
return 0;
}我在编译一个project时,因为这个问题耗费了一些时间,遂记录之。
相关文章推荐
- C++强制转换不同声明或类型的函数指针隐患
- 理解复杂的C/C++声明 const, typedef , 函数指针
- C++强制转换不同声明或类型的函数指针隐患
- C++基础2 引用 函数扩展: 默认值 占位符 指针 重载 类:引用类指针 声明实现分开写
- c++ 变量声明: 成员函数指针 成员变量指针
- C++ 3维数组指针声明的3种方式
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- C++中,函数声明时指针、引用相关的语义,定义方法原型时参考。
- 使用类成员函数指针调用C++成员函数的一种方式
- C++强制转换不同声明或类型的函数指针隐患
- [C/C++]如何解读返回函数指针的函数声明
- 理解复杂的C/C++声明 const, typedef , 函数指针
- C/C++回调方式系列之一 函数指针和函数回调模式
- [C/C++]如何解读返回函数指针的函数声明
- C++中的成员函数调用原理及this指针的传递方式
- 理解复杂的C/C++声明 const, typedef , 函数指针
- C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
- C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)
- C/C++_log2000_函数声明与指针定义等零散知识点随手笔记
- C/C++语言中指向函数的指针