tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[PATCH] Avoid defining _NETBSD_SOURCE for strict C++
_NETBSD_SOURCE defines some extra functions, which may use reserved
names. The following patch avoids this problem.
OK?
Index: sys/featuretest.h
===================================================================
RCS file: /cvsroot/src/sys/sys/featuretest.h,v
retrieving revision 1.10
diff -u -r1.10 featuretest.h
--- sys/featuretest.h 26 Apr 2013 18:29:06 -0000 1.10
+++ sys/featuretest.h 30 Aug 2020 10:38:00 -0000
@@ -66,7 +66,8 @@
#endif
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
- !defined(_XOPEN_SOURCE) && !defined(_NETBSD_SOURCE)
+ !defined(_XOPEN_SOURCE) && !defined(_NETBSD_SOURCE) && \
+ !defined(__STRICT_ANSI__)
#define _NETBSD_SOURCE 1
#endif
---------------
Following test case should not error, because major is not a reserved
word in C++.
#!/bin/sh
cat << EOF > test.cpp
#include <sys/types.h>
int major(int a, int b, int c, int d) { return 3; }
int main() {
return major(1,2,3,4);
}
EOF
c++ test.cpp -std=c++14
Output is:
test.cpp:3:18: error: too many arguments provided to function-like macro invocation
int major(int a, int b, int c, int d) { return 3; }
^
/usr/include/sys/types.h:264:9: note: macro 'major' defined here
#define major(x) ((devmajor_t)(((uint32_t)(x) & 0x000fff00) >> 8))
^
test.cpp:3:41: error: expected expression
int major(int a, int b, int c, int d) { return 3; }
^
test.cpp:3:52: error: expected ';' after top level declarator
int major(int a, int b, int c, int d) { return 3; }
^
;
test.cpp:5:17: error: too many arguments provided to function-like macro invocation
return major(1,2,3,4);
^
/usr/include/sys/types.h:264:9: note: macro 'major' defined here
#define major(x) ((devmajor_t)(((uint32_t)(x) & 0x000fff00) >> 8))
^
4 errors generated.
Home |
Main Index |
Thread Index |
Old Index