小编Wil*_*ill的帖子

由<iterator>引入的sys/sysmacros.h中定义的主要和次要宏

我正在编写一个具有类似矩阵结构的类,我希望有一个名为minor的成员函数与矩阵操作相同.这会触发一些错误.我系统上的最小测试用例:

#include <iterator>
void minor(int row, int col);
Run Code Online (Sandbox Code Playgroud)

编译时,clang提供以下错误:

$ clang++ -Weverything -std=c++11 test.cpp 
test.cpp:2:21: error: too many arguments provided to function-like macro invocation
void minor(int row, int col);
                    ^
/usr/include/x86_64-linux-gnu/sys/sysmacros.h:67:10: note: macro 'minor' defined here
# define minor(dev) gnu_dev_minor (dev)
         ^
test.cpp:2:6: error: variable has incomplete type 'void'
void minor(int row, int col);
     ^
2 errors generated.
$
Run Code Online (Sandbox Code Playgroud)

sys/sysmacros.h的相关部分是:

/* Access the functions with their traditional names.  */
# define major(dev) gnu_dev_major (dev)
# define minor(dev) gnu_dev_minor (dev)
# …
Run Code Online (Sandbox Code Playgroud)

c++ macros glibc libstdc++

17
推荐指数
1
解决办法
4815
查看次数

标签 统计

c++ ×1

glibc ×1

libstdc++ ×1

macros ×1