“预期声明说明符”错误消息

时间:2012-09-20 23:10:29

标签: c file-io

我目前正在大学学习C语言,所以这是一项家庭作业,但我遇到了一个小问题。我猜测我只是误判了语法,或者遗漏了一些非常明显的东西。我的编译器告诉我有:

  

预期的声明说明符或" ..."在常数之前

并指向O_RDWR

我已经在Stack Exchange上搜索和搜索了,但似乎没有任何特定的东西。遵循C引用中的语法,它很好。我环顾四周,它说我没有预先确定typedef,但我已经尝试过无济于事。

我已根据编译器**

对导致问题的部分加注星标
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
    int count;

    printf ("This program was called  \"%s\".\n",argv[0]);

    if (argc > 1)
    {
        for (count = 1; count < argc; count++)
        {
            printf("argv[%d] = %s\n", count, argv[count]);
        }
    }
    else
    {
        printf("The command had no arguments.\n");
    }

    if  (argc == 4)
    {
        printf("There are the correct number of arguments(4)");
    }
    else
    {
        printf("Not enough arguments! please try again");
    }

    **int open(const char *argv[1], O_RDWR);

    return 0;**
}

3 个答案:

答案 0 :(得分:2)

尝试open(argv[1], O_RDWR); - 您无需指定arg的类型或返回值。

...而且我假设**只是为了突出问题区域 - 如果没有,它们也应该去...编辑:只是注意到你在问题中说过了!

答案 1 :(得分:2)

int open(const char *argv[1], O_RDWR); 

你想通过这个声明做什么?编译器将其视为函数声明,而不是函数调用。它失败了,因为O_RDWR不是类型名称。如果您需要致电open(),语法应如下所示:

int fd = open(argv[1], O_RDWR);
if(fd != -1)
{
   // File opened OK. Proceed with file operations.
}
else
{
   // File failed to open. Handle error occured
}

答案 2 :(得分:0)

打开调用会将 HANDLE 返回到 int 类型的指定文件。因此,您只需要声明 int 类型 HANDLE 以从打开收集。所以,

int FileDesc ;
FileDesc = open( argv[1], O_RDWRD ) ;
// Check for Errors here