Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用C还是C++;返回变量类型的最大大小的实现? 从标准的观点来看,我应该使用C++中的以下代码> 页眉?< /p>_C++_C_Standards_Char_Limits - Fatal编程技术网

我应该使用C还是C++;返回变量类型的最大大小的实现? 从标准的观点来看,我应该使用C++中的以下代码> 页眉?< /p>

我应该使用C还是C++;返回变量类型的最大大小的实现? 从标准的观点来看,我应该使用C++中的以下代码> 页眉?< /p>,c++,c,standards,char,limits,C++,C,Standards,Char,Limits,UCHAR\u MAX哪个是c实现,哪个是 STD::MultIcILimeLimult::Max():/Cuff>这是C++实现。 这两个版本的结果是相同的,但我应该选择基于某种标准的实现,还是基于可读性和可移植性。注意:此实现必须是跨平台兼容的。我编写C++代码。如果你想把代码编译成C,那么你就非常需要使用 。如果你正在编写C++,最好使用C++ 标题。后者允许您编写在模板中工作的代码,而这些模板不能与C头真正复制: template <class T> class myte

UCHAR\u MAX
哪个是c实现,哪个是 <代码> STD::MultIcILimeLimult::Max():/Cuff>这是C++实现。


这两个版本的结果是相同的,但我应该选择基于某种标准的实现,还是基于可读性和可移植性。注意:此实现必须是跨平台兼容的。我编写C++代码。

如果你想把代码编译成C,那么你就非常需要使用<代码> <代码>。如果你正在编写C++,最好使用C++ <代码> <代码>标题。后者允许您编写在模板中工作的代码,而这些模板不能与C头真正复制:

template <class T>
class mytemplate { 
    T x;
    void somefunc() { x = std::numeric_limits<T>::max(); } // or whatever...
};
模板
类mytemplate{
tx;
void somefunc(){x=std::numeric_limits::max();}//或其他任何。。。
};

如果您希望代码能够编译为C,那么您非常需要使用
。如果你正在编写C++,最好使用C++ <代码> <代码>标题。后者允许您编写在模板中工作的代码,而这些模板不能与C头真正复制:

template <class T>
class mytemplate { 
    T x;
    void somefunc() { x = std::numeric_limits<T>::max(); } // or whatever...
};
模板
类mytemplate{
tx;
void somefunc(){x=std::numeric_limits::max();}//或其他任何。。。
};

使用C时,
std::numeric\u limits
显然不可用

< C++ >它取决于你想做什么-<代码> STD::MultIcIOL:::Max()/Cord>不是当前C++标准的常量表达式。
在这些情况下,C-ish宏的替代方法是使用类似Boost的东西。整数
const_min
/
const_max
也可以在模板上下文中工作。

使用C时,
std::numeric_limits
显然不可用

< C++ >它取决于你想做什么-<代码> STD::MultIcIOL:::Max()/Cord>不是当前C++标准的常量表达式。
在这些情况下,C-ish宏的另一种替代方法是使用Boost.Integers
const_min
/
const_max
,它也可以在模板化的上下文中工作。

知道您在用什么语言编写,并用那种语言编写。如果你正在写C++,使用标准C++的做事方式。

标准C++通常是跨平台兼容的(有例外,比如代码>导出< /COD>,但是<代码>导出< /代码>无论如何都被从C++标准中删除。坚持C++结构比在C和C++结构之间切换更可读。

< P>知道你在写什么语言,用那种语言写。如果你正在写C++,使用标准C++的做事方式。

标准C++通常是跨平台兼容的(有例外,比如代码>导出< /COD>,但是<代码>导出< /代码>无论如何都被从C++标准中删除。通常使用C++构造比在C和C++构造之间切换更可读。

你应该使用保持一致性。

在windows平台上,如果包括,您可能还希望

#define NOMINMAX
为避免名称与最小值和最大值冲突,应使用保持一致

在windows平台上,如果包括,您可能还希望

#define NOMINMAX

<>避免与Min和Max .P/>的名称冲突,如果你在C++中编程,你可以使用C++典型的成语,如果在C,C典型的成语中;Auik UcCHARMAX是从C++(限制从C),所以你应该坚持到哪里你可以使用STD::如果你在C++中编程,那么C++中的C++可能是典型的成语,如果在C、C中有典型的成语;Auik UcCHARMAX是从C++(限制从C),所以你应该坚持到哪里你可以使用STD::根据Boost.integers const_max相当于std::numeric_limits::max()。@Elpez:关于它们的值,是的。但它们不是函数,它们是
静态常量
积分,这意味着它们可以与例如
case
一起使用,或者初始化
静态常量
积分成员。根据Boost.integers,const_max相当于std::numeric_limits::max()。@Elpez:关于它们的值,是等效的。但它们不是函数,它们是静态常量积分,这意味着它们可以与例如
case
一起使用,或者初始化
静态常量
整体成员。我喜欢避免
由于交叉兼容性问题我喜欢避免
由于交叉兼容性问题你是说
静态T
?这在C++0x之前是不起作用的,因为常量表达式中不允许函数调用。@乔治:不是真的——我只是懒得把代码放到它真正属于的函数中。你是说
静态t
?这在C++0x之前是行不通的,因为常量表达式中不允许函数调用。@Georg:不是真的——我只是懒得把代码放到它真正属于的函数中。