是否可以使用#define定义函数名称?

时间:2019-12-10 19:03:04

标签: c

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#define WAITINGFUNC void waitingfor

WAITINGFUNC(double seconds)
{
    sleep(seconds);
}

void main()
{
    WAITINGFUNC(3);
}

是否可以提供这样的函数名称?关于使代码对任何人都可读。

另外,我得到了这个错误:expected declaration specifiers or '...' before numeric constant

1 个答案:

答案 0 :(得分:5)

在您的代码中,WAITINGFUNC扩展为void waitingfor。当您声明一个函数时,这是预期的,但在调用它时却并非如此。因此,在main函数中,您基本上具有以下功能:

void main()
{
    void waitingfor(3);
}

除了main 必须返回int而不是void之外,void waitingfor(3);也是语法错误,因为这并不意味着任何东西。使用MACROS进行函数声明并不是一个好主意,它也不会以任何有意义的方式提高代码的可读性。您最好坚持使用普通的函数声明,因为几乎所有C程序员都非常擅长阅读和理解大多数函数声明。