你好,c++ 是不可以调用在后面声明的方法的,要先声明(可以不实现)才可以。
但是类中可以上下调用。给你两个代码,你看看
在log.h中只写函数的声明
另外建立一个log.cpp的文件,把函数的实现都移到这个cpp文件中去就可以了。
全局函数就是可以被其他文件中函数调用,比如一个大型程序,由很多人来共同编写,每个人写的程序为一个文件,全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数,如果不想被其他人调用,可以用static来定义,就只能被本文件程序调用
全局函数是定义在类外的函数,成员函数就是定义在类中的函数。
如果全局函数的定义在类后,而类里要使用这个函数的话,只需在类的前面前向声明这个函数就行了。如:
//前向声明
void f();
class C
{
public:
void callf()
{
//调用f
f();
}
};
//定义f
void f()
{
//...
}
应该分为3个文件,一个头文件存储结构体定义供其它.c文件使用,一个.c文件中定义全局变量,另一个.c文件中声明使用全局变量,并通过函数修改该全局变量
a.h //存放结构体定义
#ifndef _A_H
#define _A_H 1
struct motor
{
INT16S goal_speed;//
INT16S current_speed;//
};
#endif
def.c //文件用来定义全局变量(注意不是声明,定义是要分配内存的)
#include "a.h"
struct motor mymotor;
//加入其它处理代码
call.c //用来实现操作全局变量的函数
#include "a.h"
extern struct motor mymotor; //这是引用外部变量的前置声明,否则直接使用单独编译该文件时会提示变量未定义
void refresh_status(struct motor *ptr);//状态刷新函数
{
INT16S i;
i=ptr->goal_speed - ptr->current_speed;//这里做减法运算
}
调用方式
refresh_status(&mymotor);