1.initializer_list
VS:定义为两个指针
const _Elem *_First;
const _Elem *_Last;
并且允许自定义的实例化
_CONST_FUN initializer_list(const _Elem *_First_arg,
const _Elem *_Last_arg) _NOEXCEPT
: _First(_First_arg), _Last(_Last_arg)
{ // construct with pointers
}
g++:定义为一个指针和一个长度
iterator _M_array;
size_type _M_len;
不允许自定义的实例化
2.exception
VS:具有一个成员
__std_exception_data _Data;
并且允许用一个字符串实例化
explicit exception(char const* const _Message)
: _Data()
{
__std_exception_data _InitData = { _Message, true };
__std_exception_copy(&_InitData, &_Data);
}
g++:全部的代码就这样
class exception
{
public:
exception() _GLIBCXX_USE_NOEXCEPT { }
virtual ~exception() _GLIBCXX_USE_NOEXCEPT;
/** Returns a C-style character string describing the general cause
* of the current error. */
virtual const char* what() const _GLIBCXX_USE_NOEXCEPT;
};
本人想本人的代码在两个平台上都能编译,有什么好的解决方案吗
VS:定义为两个指针
const _Elem *_First;
const _Elem *_Last;
并且允许自定义的实例化
_CONST_FUN initializer_list(const _Elem *_First_arg,
const _Elem *_Last_arg) _NOEXCEPT
: _First(_First_arg), _Last(_Last_arg)
{ // construct with pointers
}
g++:定义为一个指针和一个长度
iterator _M_array;
size_type _M_len;
不允许自定义的实例化
2.exception
VS:具有一个成员
__std_exception_data _Data;
并且允许用一个字符串实例化
explicit exception(char const* const _Message)
: _Data()
{
__std_exception_data _InitData = { _Message, true };
__std_exception_copy(&_InitData, &_Data);
}
g++:全部的代码就这样
class exception
{
public:
exception() _GLIBCXX_USE_NOEXCEPT { }
virtual ~exception() _GLIBCXX_USE_NOEXCEPT;
/** Returns a C-style character string describing the general cause
* of the current error. */
virtual const char* what() const _GLIBCXX_USE_NOEXCEPT;
};
本人想本人的代码在两个平台上都能编译,有什么好的解决方案吗
解决方案
20
只用标准规定好的功能。
你说的都是实现细节。
你说的都是实现细节。
20
你按照标准写代码,就能在不同平台编译。
为了写点代码,还得抠实现细节,八成走在歧途上了。
为了写点代码,还得抠实现细节,八成走在歧途上了。
20
实现不一样是正常的
只要符合标准,你的符合标准的代码,就可以正常运行,没有差别
只要符合标准,你的符合标准的代码,就可以正常运行,没有差别