Я занимался системным программированием на C++ и хочу передать переменную errno в Linux-системах своему обработчику исключений. Вы можете увидеть пример кода здесь https://pastebin.com/ppgMc8Hj
#include <sys/stat.h>
#include <cerrno>
#include <iostream>
#include <cstring>
std::string errorString(int errno){
return std::strerror(errno);
}
int main(){
struct stat sb;
errno = 0;
if(stat("/jdfj/", &sb)){
errorString(errno);
}
else{
std::cout << std::boolalpha << S_ISDIR(sb.st_mode) << std::endl;
}
}
Но выдает вот такую ошибку
In function 'int main()':
14:26: error: invalid conversion from 'int' to 'int* (*)()' [-fpermissive]
6:13: note: initializing argument 1 of 'std::string errorString(int* (*)())'.
Я видел здесь http://en.cppreference.com/w/cpp/string/byte/strerror, что стандартная функция, возвращающая строку из errno, принимает целое число в качестве аргумента. мой вопрос
- Если это тип int, почему он не работает в приведенном выше коде?
- Если нет, то какой это тип?