web-dev-qa-db-ja.com

O_WRONLY宣言なし(この関数での最初の使用)

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
char data [ 6 ];
main ( ) {
int len;
desc = open ( "Resultat", O_WRONLY | O_CREAT | O_EXCL, 0666 );
if ( desc != -1 ) {
len = write ( desc, &data, sizeof ( data ) );
if ( len != sizeof ( data ) )
printf ( "ERROR" );
} }

これは私のコードであり、エラーが発生しています

O_WRONLY undeclared (first use in this function)
O_CREAT undeclared (first use in this function)
O_EXCL undeclared (first use in this function)

どうすれば修正できますか?

11
Nejthe

@Kevinは正しいです。私のArchのインストールでは、 _man fcntl.h_ に従って、_#include <fcntl.h>_にアクセスするには_O_WRONLY_が必要です。

open()を使用するには、_#include <sys/stat.h>_も必要です。

16

私のマシン(Ubuntu 12.0.4)でこのコードを試しました。しかし、あなたのようなエラーメッセージは表示されませんでした。

open()のmanページによると、おそらく不足しています #include <sys/stat.h>

6
runner

open(2) のマニュアルページ:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

必要なものがすべて含まれていることを確認してください。

0
Antti Haapala