I am trying to run a c++ code however, io.h is not found.
'io.h' file not found
It is shown as
#include <io.h>
Additionally, I am getting a bunch of weird problems (for a code that is rather > 16 years old):
Use of undeclared identifier '_read'
or
Unknown type name '__int64'; did you mean '__int64_t'?
or
Use of undeclared identifier '_O_RDONLY'
or
Use of undeclared identifier '_lseeki64'; did you mean 'fseeko64'?
or
Cannot initialize a parameter of type 'FILE *' (aka '_IO_FILE *') with an lvalue of type 'int'
or
Use of undeclared identifier '_lseek'; did you mean 'fseek'?
or
Use of undeclared identifier '_close'
I wonder if these are related to io.h not being found.
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.1 LTS Release: 20.04 Codename: focal
I have CLion 2020.2.3 and
$ gcc --version gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Advertisement
Answer
Add compiler directives to manage multi-os compilation.
//old line: #include<io.h> #ifdef _WIN32 #include <io.h> #elif __linux__ #include <inttypes.h> #include <unistd.h> #define __int64 int64_t #define _close close #define _read read #define _lseek64 lseek64 #define _O_RDONLY O_RDONLY #define _open open #define _lseeki64 lseek64 #define _lseek lseek #define stricmp strcasecmp #endif //SAF_Handle.cpp line:458 old line:INFILE = _open(infilename, _O_RDONLY | _O_BINARY); #ifdef __linux__ INFILE = _open(infilename, _O_RDONLY); #elif INFILE = _open(infilename, _O_RDONLY | _O_BINARY); #endif
Fixed a few loops where the iterator variable ‘i’ was undeclared.