On Mon, Nov 25, 2019 at 03:36:21PM -0500, Ryan Stone wrote:
> Remove "using namespace std;" from your program.
I am don't have "using namespace std;".
Example:
==#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <net/netmap_user.h>
==
Yes, only includes.
c++ -c tatomic.cc
In file included from tatomic.cc:11:
In file included from /usr/include/net/netmap_user.h:104:
In file included from /usr/include/net/netmap.h:816:
/usr/include/stdatomic.h:186:17: error: unknown type name '_Bool'
typedef _Atomic(_Bool) atomic_bool;
^
/usr/include/stdatomic.h:186:26: error: C++ requires a type specifier for all
declarations
typedef _Atomic(_Bool) atomic_bool;
~~~~~~ ^
/usr/include/stdatomic.h:379:17: error: unknown type name '_Bool'
static __inline _Bool
^
/usr/include/stdatomic.h:383:10: error: address argument to atomic operation
must be a pointer to _Atomic type ('volatile atomic_bool *' (aka
'volatile int *') invalid)
return (atomic_exchange_explicit(&__object->__flag, 1, __order));
^ ~~~~~~~~~~~~~~~~~
/usr/include/stdatomic.h:242:2: note: expanded from macro
'atomic_exchange_explicit'
__c11_atomic_exchange(object, desired, order)
^ ~~~~~~
/usr/include/stdatomic.h:390:2: error: address argument to atomic operation must
be a pointer to _Atomic type ('volatile atomic_bool *' (aka
'volatile int *') invalid)
atomic_store_explicit(&__object->__flag, 0, __order);
^ ~~~~~~~~~~~~~~~~~
/usr/include/stdatomic.h:256:2: note: expanded from macro
'atomic_store_explicit'
__c11_atomic_store(object, desired, order)
^ ~~~~~~
/usr/include/stdatomic.h:394:17: error: unknown type name '_Bool'
static __inline _Bool
^
6 errors generated.
Ok, try ugly hack for _Bool:
==#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
typedef int _Bool;
#include <net/netmap_user.h>
==
No, errors. Now try <atomic>
==#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
typedef int _Bool;
#include <net/netmap_user.h>
#include <memory>
#include <atomic>
==
Many errors:
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1166:49: error: expected ')'
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1166:1: note: to match this '('
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:32: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1166:1: error: expected expression
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:37: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1166:21: error: expected expression
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1166:53: error: expected ';' at end of
declaration
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1166:54: error: expected unqualified-id
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/__config:839:21: note: expanded from macro
'_NOEXCEPT'
# define _NOEXCEPT noexcept
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1174:1: error: redefinition of
'__atomic_is_lock_free'
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:2: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
/usr/include/c++/v1/atomic:1166:1: note: previous definition is here
atomic_is_lock_free(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:2: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1174:40: error: expected ')'
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1174:1: note: to match this '('
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:32: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1174:1: error: expected expression
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:176:37: note: expanded from macro
'atomic_is_lock_free'
__atomic_is_lock_free(sizeof(*(obj)), obj)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1174:21: error: expected expression
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1174:44: error: expected ';' at end of
declaration
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/atomic:1174:45: error: expected unqualified-id
atomic_is_lock_free(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/c++/v1/__config:839:21: note: expanded from macro
'_NOEXCEPT'
# define _NOEXCEPT noexcept
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1202:1: error: unknown type name
'memory_order_seq_cst'
atomic_store(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
^
/usr/include/stdatomic.h:363:41: note: expanded from macro
'atomic_store'
atomic_store_explicit(object, desired, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1210:1: error: unknown type name
'memory_order_seq_cst'
atomic_store(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
^
/usr/include/stdatomic.h:363:41: note: expanded from macro
'atomic_store'
atomic_store_explicit(object, desired, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1240:1: error: unknown type name
'memory_order_seq_cst'
atomic_load(const volatile atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:361:31: note: expanded from macro 'atomic_load'
atomic_load_explicit(object, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1248:1: error: unknown type name
'memory_order_seq_cst'
atomic_load(const atomic<_Tp>* __o) _NOEXCEPT
^
/usr/include/stdatomic.h:361:31: note: expanded from macro 'atomic_load'
atomic_load_explicit(object, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1278:1: error: unknown type name
'memory_order_seq_cst'
atomic_exchange(volatile atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
^
/usr/include/stdatomic.h:349:44: note: expanded from macro
'atomic_exchange'
atomic_exchange_explicit(object, desired, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1286:1: error: unknown type name
'memory_order_seq_cst'
atomic_exchange(atomic<_Tp>* __o, _Tp __d) _NOEXCEPT
^
/usr/include/stdatomic.h:349:44: note: expanded from macro
'atomic_exchange'
atomic_exchange_explicit(object, desired, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1314:1: error: C++ requires a type specifier for all
declarations
atomic_compare_exchange_weak(volatile atomic<_Tp>* __o, _Tp* __e, _Tp __d)
_NOEXCEPT
^
/usr/include/stdatomic.h:347:15: note: expanded from macro
'atomic_compare_exchange_weak'
desired, memory_order_seq_cst, memory_order_seq_cst)
^
In file included from tatomic.cc:13:
In file included from /usr/include/c++/v1/memory:668:
/usr/include/c++/v1/atomic:1314:1: error: unknown type name
'memory_order_seq_cst'
/usr/include/stdatomic.h:347:37: note: expanded from macro
'atomic_compare_exchange_weak'
desired, memory_order_seq_cst, memory_order_seq_cst)
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
Try different order:
==#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <memory>
#include <atomic>
typedef int _Bool;
#include <net/netmap_user.h>
==
No errors, no ugly hack for _Bool required.
Is this normal?