[错误预期标识符或'('之前' {'令牌]

时间:2014-11-24 02:00:07

标签: c++ c

我有一个项目,项目中的两个文件被命名为d2.c.和student.txt。

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define appendData();
#define data();
#define editRecord();
#define searchRecord();
#define deleteRecord();
int main(void)
{
    struct person
    {
        char stdNumb [20];
        char firstName [20],lastName [20], icPass [20], nationality [20], gender [20], dateOfBirth [20];
        char contact [20], address [30];
    };
    char choice;
    while(1)
    {

        printf("\n============================");
        printf("\n            MENU");
        printf("\n============================");
        printf("\n1. ADD");
        printf("\n2. SEARCH");
        printf("\n3. EDIT");
        printf("\n4. DELETE");
        printf("\n5. EXIT");
        printf("\n============================");
        printf("\n\n");

        printf("Enter your choice : ");
        choice = getche();
        switch(choice)
        {
        case'1' : //call append record
            data();
            break;
        case'2' : //call search record
            searchRecord();
            break;
        case'3' : //edit record
            editRecord();
            break;
        case'4' : //Read all record
            deleteRecord();
            break;
        case'5':
             exit(0);
        defaut:
            printf("ss");
        }
    }
}

void data()
{
    FILE *fp;
    struct person obj;

    fp=fopen("D:\\data.txt","a");

    printf("\n============================");
    printf("\n            ADD");
    printf("\n============================\n\n");
    printf("Student Number: ");

    scanf("%s",&obj.stdNumb);
}

现在编译器正在给我一个警告

warning: useless type name in empty declaration [enabled by default]

我无法理解为什么会出现此警告,因为我必须在项目的其他文件中使用此结构。

1 个答案:

答案 0 :(得分:3)

文件开头的#define会导致这些函数名称被替换为分号。特别是这一个:

#define data();

造成这种情况:

void data()

{

成为这个:

void ;

{

会导致错误,因为缺少函数名和括号,并且添加了不需要的分号。