小编sha*_*oth的帖子

"g ++ -Wall test.cpp -o test"中的"-Wall"是做什么的?

-o更改输出文件名(我发现使用--help)

但是我找不到什么-Wall呢?

c++ g++

78
推荐指数
4
解决办法
5万
查看次数

为何使用!! 将int转换为bool时?

以这种方式将整数转换为布尔值的原因是什么?

bool booleanValue = !!integerValue;
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

bool booleanValue = integerValue;
Run Code Online (Sandbox Code Playgroud)

我所知道的是,在VC++ 7中,后者将导致C4800警告而前者不会.这两者之间还有其他区别吗?

c++ integer boolean

76
推荐指数
6
解决办法
5万
查看次数

URLConnection.setDoOutput()究竟是什么影响的?

setDoOutput()进来URLConnection.根据文件,我应该

如果您打算将URL连接用于输出,请将DoOutput标志设置为true,否则设置为false.

现在我正面临这个问题 - Java运行时将请求转换为POST一次setDoOutput(true)被调用,服务器只响应GET请求.我想了解如果setDoOutput(true)从代码中删除它会发生什么.

这到底会产生什么影响?假设我把它设置为false- 我现在能做什么,现在不能做什么?我可以执行GET请求吗?在这种方法的背景下什么是"输出"?

java android urlconnection

72
推荐指数
2
解决办法
7万
查看次数

是否正确使用#pragma warning push/pop来暂时改变警告级别?

偶尔编写一下根本不会发出警告的C++代码是很困难的.然而,启用警告是一个好主意.因此,通常需要禁用某些特定构造周围的警告,并在所有其他代码段中启用它们.

到目前为止,我已经看到了两种方法.

第一个是使用#pragma warning( push )#pragma warning( pop ):

 #pragma warning( push )
 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( pop )
Run Code Online (Sandbox Code Playgroud)

第二是使用#pragma warning( default ):

 #pragma warning( disable: ThatWarning )
 //code with ThatWarning here
 #pragma warning( default: ThatWarning )
Run Code Online (Sandbox Code Playgroud)

我在第二个变体中看到的问题是它丢弃了原始警告级别 - 警告可能在此之前已关闭或警告级别可能已被更改.使用default会丢弃这些改动.

第一种方法看起来很干净.它有什么问题吗?有没有更好的方法来实现同样的目标?

c++ warnings pragma compiler-warnings visual-c++

70
推荐指数
4
解决办法
5万
查看次数

如何在IIS7中运行gzip压缩?

我已经为IIS7安装了静态和动态压缩,并web.config在我的应用程序Virtual Folder级别设置了两个值.据我了解,我不再需要在服务器或站点级别启用压缩,我可以使用我的web.config文件在每个文件夹的基础上管理它.

我的.config文件中有两个设置,我已经设置为我的应用程序自定义gzip:

<httpCompression dynamicCompressionDisableCpuUsage="90"
    dynamicCompressionEnableCpuUsage="0">
  <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
  <dynamicTypes>
    <remove mimeType="*/*"/>
    <add mimeType="*/*" enabled="true" />
  </dynamicTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
    dynamicCompressionBeforeCache="true" />
Run Code Online (Sandbox Code Playgroud)

但是,当我运行应用程序时,我可以清楚地看到没有使用gzip,因为我的页面大小是相同的.我也在使用YSlow for FireFox,这也证实我的页面没有被gziped.

我在这里错过了什么?在IIS6中,只需指定文件类型,并将压缩级别设置在0-10之间即可.我没有记录需要记录指定文件类型或压缩级别,因为默认值似乎涵盖了文件类型,我没有在任何地方看到级别.

compression asp.net iis-7 gzip .net-3.5

68
推荐指数
5
解决办法
5万
查看次数

memset()或值初始化将结构清零?

在Win32 API编程中,通常使用struct具有多个字段的C s.通常只有其中几个具有有意义的值,而其他所有值都必须归零.这可以通过以下两种方式之一实现:

STRUCT theStruct;
memset( &theStruct, 0, sizeof( STRUCT ) );
Run Code Online (Sandbox Code Playgroud)

要么

STRUCT theStruct = {};
Run Code Online (Sandbox Code Playgroud)

第二个变体看起来更干净 - 它是一个单行,它没有任何可能输错的参数并导致错误被种植.

与第一个变体相比,它有任何缺点吗?使用哪种变体?为什么?

c c++ struct initialization visual-c++

63
推荐指数
6
解决办法
7万
查看次数

如果增加一个等于STL容器的结束迭代器的迭代器,会发生什么

如果我将迭代器指向向量的最后一个元素时,它会增加2怎么办?在这个询问如何通过2个元素调整到STL容器的迭代器的问题中,提供了两种不同的方法:

  • 使用算术运算符的形式 - + = 2或++两次
  • 或者使用std :: advance()

当迭代器指向STL容器的最后一个元素或更远时,我用VC++ 7测试了它们的边缘情况:

vector<int> vec;
vec.push_back( 1 );
vec.push_back( 2 );

vector<int>::iterator it = vec.begin();
advance( it, 2 );
bool isAtEnd = it == vec.end(); // true
it++; // or advance( it, 1 ); - doesn't matter
isAtEnd = it == vec.end(); //false
it = vec.begin();
advance( it, 3 );
isAtEnd = it == vec.end(); // false
Run Code Online (Sandbox Code Playgroud)

我已经看过有时可以建议在遍历vector和其他容器时与vector :: end()进行比较:

for( vector<int>::iterator it = vec.begin(); it != vec.end(); …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl vector

62
推荐指数
3
解决办法
3万
查看次数

为什么在传递"null"常量时会出现异常,但在传递"null"字符串引用时却没有?

如果我运行此代码:

Console.WriteLine( String.Format( "{0}", null ) );
Run Code Online (Sandbox Code Playgroud)

我得到一个,ArgumentNullException但如果我运行此代码:

String str = null;
Console.WriteLine( String.Format( "{0}", str ) );
Run Code Online (Sandbox Code Playgroud)

它运行得很好,输出是一个空字符串.

现在两件看起来相当于我 - 他们都传递了一个空引用String.Format()但行为是不同的.

如何识别不同的行为?

.net c# reference argumentnullexception

59
推荐指数
1
解决办法
1096
查看次数

为什么代码会通过空指针显式调用静态方法?

我在几个旧项目中看到过这样的代码:

class Class {
    static void Method() {}
};

((Class*)0)->Method();
Run Code Online (Sandbox Code Playgroud)

此代码包含未定义的行为,因为它包括取消引用空指针(无论之后发生什么).这真的没有意义 - 演员是在那里将类型名称提供给编译器,并且编写上面代码的人可以写这个:

Class::Method();
Run Code Online (Sandbox Code Playgroud)

而后者也没关系.

为什么有人会写前代码?它是来自一些美好时光的已知成语还是什么?

c++ pointers static-members undefined-behavior dereference

57
推荐指数
1
解决办法
3033
查看次数

如何在double.ToString()中更改小数点的符号?

我想将小数点更改为C#中的另一个字符.我有一个double变量value

double value;
Run Code Online (Sandbox Code Playgroud)

当我使用命令时:

Console.WriteLine(value.ToString()); // output is 1,25
Run Code Online (Sandbox Code Playgroud)

我知道我可以这样做:

Console.WriteLine(value.ToString(
    CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25
Run Code Online (Sandbox Code Playgroud)

但我不太喜欢它,因为它很长,而且在我的程序中经常需要它.

是否有一个较短的版本设置"小数点"真的作为点而不是逗号,因为在我的文化中是常见的?

.net c# double tostring

53
推荐指数
5
解决办法
11万
查看次数