编译64位应用程序时,为什么strlen()返回64位整数?我错过了什么吗?
我理解strlen()返回一个size_t类型,根据定义,这不应该改变,但是......为什么strlen 需要返回一个64位整数?
该函数旨在与字符串一起使用.照这样说:
程序员通常会创建数千兆字节或多字节的字符串吗?如果他们这样做了,他们是否需要更好的方法来确定字符串长度而不是搜索NULL字符?
我认为这很荒谬,事实上,我们可能需要一个带回调的StrLenAsync()函数来处理在40TB字符串中搜索NULL的超长进程.听起来很愚蠢?是的,strlen()返回一个64位整数!
当然,提出的StrLenAsync()函数是一个笑话.
我无法确定这些代码是否应该编译,或者我只是尝试了两个编译器都有错误(GCC 4.2和Sun Studio 12).通常,如果您在头文件中声明了静态类成员,则需要在某个源文件中定义它.但是,静态常量积分的标准中存在例外.例如,允许这样做:
#include <iostream>
struct A {
static const int x = 42;
};
Run Code Online (Sandbox Code Playgroud)
无需在类体外部添加x的定义.我正在尝试做同样的事情,但我也取x的地址并将其传递给模板.这导致链接器错误抱怨缺乏定义.下面的例子没有链接(缺少A :: x的定义),即使它们都在同一个源文件中:
#include <iostream>
template<const int* y>
struct B {
static void foo() { std::cout << "y: " << y << std::endl; }
};
struct A {
static const int x = 42;
typedef B<&x> fooness;
};
int main()
{
std::cout << A::x << std::endl;
A::fooness::foo();
}
Run Code Online (Sandbox Code Playgroud)
这是奇怪的,因为只要我不将地址传递给模板,它就可以工作.这是一个错误还是某种技术上符合标准的?
编辑:我应该指出&A :: x 不是运行时值.在编译时为逻辑分配的变量留出内存.
struct SomeStruct
{
int a;
int b;
};
SomeStruct someFn( int init )
{
SomeStruct ret = { init, init };
//...
return ret;
}
void someFn2( SomeStruct* pStruct )
{
// ..
}
int main( )
{
someFn2( &someFn(32) );
return 0;
}
Run Code Online (Sandbox Code Playgroud) 据我所知,浮点值的形式为n*2 ^ e,其中
我正在查看C++标准,但未能找到标准指定的位置,或者要求float,double和long double类型与其他(IEEE)标准中定义的范围相关联.我在3.9.1.8中找到的唯一相关内容是:
有三种浮点类型:float,double和long double.double类型提供至少与float一样多的精度,long double类型提供至少与double一样多的精度.float类型的值集是double类型的值集的子集; double类型的值集是long double类型的值集的子集.浮点类型的值表示是实现定义的.
并没有提到该类型提供的最小范围.
标准在何处/如何指定浮点类型的(最小?)值范围?或者编译器可以自由选择任何值范围并且仍然符合标准吗?
我的问题很简单:
我应该使用char数组,例如:
char *buf, buf2[MAX_STRING_LENGTH]
Run Code Online (Sandbox Code Playgroud)
等或者我应该在一个库中使用std :: string,这些库将被其他程序员使用,他们可以在他们选择的任何SO和编译器上使用它吗?
考虑性能和便携性......
从我的角度来看,std字符串更容易,性能相同或差别太小,不能使用std:string,关于可移植性,我不知道.我想因为它是标准的,所以不应该有任何编译器在没有它的情况下编译C++,至少是任何重要的编译器.
编辑:
该库将在3个主要操作系统上编译,理论上,作为库分发
你的意见?
蒂,
乔
如何在两个inpdendent文件中管道linux管道的标准输出?
我使用一个名为openRTSP的工具,它在两个独立的文件中标准输出,即openRTSP>/tmp/file1>/tmp/file2
我一直认为以下类型是"基本类型",所以我认为我对这个问题的回答是正确的,但令人惊讶的是它被推翻了......
搜索网络,我发现了这一点.所以,IBM也说这些类型是基本类型..
那么你如何解读标准? 以下类型(和类似类型),"基本类型"是否符合C++标准?
unsigned int
signed char
long double
short int
unsigned short int
Run Code Online (Sandbox Code Playgroud)
编辑:
再次与这个问题相关:Comceau和gcc不要将"long double","short int"或"unsigned int"等类型视为"基本类型"!(而ibm,intel和microsoft编译器都这样做.)如果他们确实将这些类型视为基本类型,则应编译以下代码:short int i = short int()
编辑:
删除long long类型,因为我忘了他们还没有正式标准..
我们已经看到无数的表单实例,其中选择下拉列表中的一个选项为"其他",并且在选择该选项时,我们可以看到输入文本框(一直隐藏),要求我们输入输入.
有没有更好的方法来实现这个?那里有插件可以让我做得更好吗?或者标准HTML元素是否足够(某些设置为select标签,可能是)?
你们如何处理边缘CSS?通过边缘,我的意思是需要斜体或粗体的单个词或短语.用刚才宣布'大胆'的课程似乎很愚蠢
Bold { font-weight: bold; }
Run Code Online (Sandbox Code Playgroud)
或斜体,或者!
Italic { font-style: italics; }
Run Code Online (Sandbox Code Playgroud)
但我发现自己犹豫是否将这样的课程放入我的css重置中.
<p>
<span class="Italic">This</span> man?
<span class="Bold">What</span> are you thinking?
</p>
Run Code Online (Sandbox Code Playgroud)
显然,如果你要结合一堆属性来使某些东西看起来不同,那就有意义......
.HoverOnMe
{
color: #880;
text-decoration: underline;
font-style: italic;
}
Run Code Online (Sandbox Code Playgroud)
但我将上述css风格归类为"非边缘".
我们被教导说元素喜欢<b>和<i>不好因为它们混合了结构和风格,因此我们不应该使用它们.那么处理'边缘css'的正确方法是什么?
我想知道是否有关于网页文件大小的网络标准,考虑到用户具有平均互联网连接,页面上的总资产重量应该多少.
谢谢