您的位置:首页 > 编程语言 > C语言/C++

在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时,因为这个问题耗费了一些时间,遂记录之。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐