小编And*_*man的帖子

#include <iostream>存在,但是我收到错误:标识符"cout"未定义.为什么?

我通过书籍学习C++和COM.在IDE MS Visual Studio 2012中,我创建了新的空C++项目,并向其中添加了一些现有文件.我的CPP文件包含#include<iostream>行,但在编辑器中我得到了这样的消息:

错误:标识符"cout"未定义

结束

错误:标识符"endl"未定义

屏幕:

在此输入图像描述

为什么会这样?

c++ com visual-studio visual-studio-2012

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

为什么有必要为片段着色器设置精度?

我学习WebGL.下一个着色器工作正常:

// vertex.shader
// precision mediump float;
attribute vec4 a_Position;
attribute float a_PointSize;

void main(){
  gl_Position = a_Position;
  gl_PointSize = a_PointSize;
}
Run Code Online (Sandbox Code Playgroud)

// fragment.shader
precision mediump float;
uniform vec4 u_FragColor;

void main(){
  gl_FragColor = u_FragColor;
}
Run Code Online (Sandbox Code Playgroud)

为什么有必要为片段着色器设置精确度?顶点着色器在没有这个的情况下工作,但片段着色器在没有此代码行的情况下不起作用(如我所见).为什么存在不同的行为?

我之前读过这篇文章,但它对我没有帮助.

precision shader opengl-es webgl

18
推荐指数
2
解决办法
1万
查看次数

尝试打印Unicode字符时出现运行时异常

Char是Haskell中Unicode字符的类型,String简单来说[Char](即Char项目列表).这是一些简单的代码:

main = putStrLn "©" -- Unicode string
Run Code Online (Sandbox Code Playgroud)

这段代码编译得很好,但是当我在PowerShel.execmd.exe中运行它时,我得到了运行时异常:

app.exe :: commitBuffer:无效参数(无效字符)

为什么会这样?奇怪的是,当我在C#中做同样的事情时,我也不例外:

Console.WriteLine("©");
Run Code Online (Sandbox Code Playgroud)

在.NET中,字符也是Unicode.相反,PowerShellcmd打印,但至少我不会例外.如何让Haskell可执行文件顺利运行?c©

haskell ghc

17
推荐指数
2
解决办法
1463
查看次数

我可以在IDE中更改Solution Configuration组合框的宽度吗?

我可以增加MS Visual Studio IDE的Solution Configuration组合框的宽度吗?我希望看到全名,例如Debug (Local)Debug (Remote).工具提示也会写入Solution Configuration文本而不是组合框的当前值.

在此输入图像描述

在此输入图像描述

在此输入图像描述

visual-studio visual-studio-2013

17
推荐指数
2
解决办法
1881
查看次数

为什么`Condition`属性不适用于`ItemGroup`元素?

MS Visual Studio 2013.

两者WhenItemGroup元素都可以具有Condition属性(正如我在MSDN中看到的那样).但我得到了不同的结果.

如果$(CAD_Year)是2015年,我预计AcRibbon不会 referensed到我的项目:

<ItemGroup Condition= "'$(CAD_Year)' &lt; '2010'" >    
  <Reference Include="AcRibbon">
    <HintPath>$(CAD_SDK_Location)\$(Inc)\AcRibbon.dll</HintPath>
    <Private>False</Private>
  </Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

但是我AcRibbon总是在解决方案浏览器中得到未解决的参考.

但这个变种工作正常:

<Choose>
  <When Condition= "'$(CAD_Year)' &lt; '2010'">
    <ItemGroup>
      <Reference Include="AcRibbon">
        <HintPath>$(CAD_SDK_Location)\$(Inc)\AcRibbon.dll</HintPath>
        <Private>False</Private>
      </Reference>
    </ItemGroup>
  </When>
</Choose>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,AcRibbon只有在$(CAD_Year)低于2010年才会被引用.为什么我得到不同的结果?

msbuild visual-studio visual-studio-2013

15
推荐指数
1
解决办法
5951
查看次数

为什么Python没有真正的常量?这不危险吗?

Python 3

我通过一本书学习Python.现在我了解到Python在这个意义上没有常量,它们在C++或C#中可用...例如,可以编写这样的危险代码:

>>> import math
>>> math.pi
3.141592653589793
>>> math.pi = 123.456
>>> math.pi
123.456
>>> 
Run Code Online (Sandbox Code Playgroud)

嗯......对我来说这是一个令人不快的惊喜......

即我可能没有受到保护,因为我加载到我的代码中的任何模块(不是我的)都可能损坏不会改变的数据.

为什么在Python中它是如此制作的?这不危险吗?

python

15
推荐指数
1
解决办法
599
查看次数

K&R练习1.16 - 线路长度限制

我正在从K&R的" The C Programming Language "一书中学习C 语言.我正在做本书中指定的练习.我的运动编号为1.16,但我不明白.

练习1.16:

修改最长行程序的主程序,以便正确打印任意长输入行的长度,并尽可能多地打印文本.

我的问题:

  1. "......尽可能多的文字......" - 字符串长度是否存在一些限制?也许在标准头文件中有一个变量,其中包含字符串长度的最大允许值?

  2. "......任意长输入行的长度......" - 但代码MAXLINE定义为1000.它的大小也是有限的.我在这里看到了一些解决方案,但在我看来这不是解决方案的决定,因为前者对行的长度有限制(1000个字符).

也许我不明白这个任务.我的理解是我必须删除1000个字符的限制.

c kernighan-and-ritchie c89

14
推荐指数
1
解决办法
3421
查看次数

内存分配和0大小:我可以获得内存泄漏吗?

我的问题位于我的代码评论中:

int* a = new int[0];// I've expected the nullptr according to my logic...
bool is_nullptr = !a; // I got 'false'
delete[] a; // Will I get the memory leaks, if I comment this row?
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ memory-leaks new-operator

14
推荐指数
3
解决办法
2035
查看次数

"中缀"如何运作?

我在玩同infixr,infixlinfix声明.我知道如何infixrinfixl工作原理:

-- Test expression: 40 +++ 20 +++ 50 +++ 10 * 10

-- infixr 8 +++ -- Calculated as: (40 +++ (20 +++ (50 +++ 10))) * 10. Result: 630.
-- infixl 8 +++ -- Calculated as: (((40 +++ 20) +++ 50) +++ 10) * 10. Result: 800.

-- infixr 6 +++ -- Calculated as: 40 +++ (20 +++ (50 +++ (10 * 10))). Result: 75.
-- infixl 6 …
Run Code Online (Sandbox Code Playgroud)

haskell infix-notation

14
推荐指数
2
解决办法
7127
查看次数

在没有括号的main()函数中尝试\ catch块

Visual Studio 2015; C++语言.

我记得我在某处读到了关于入口点(即main方法)的内容:

#include <iostream>
using namespace std;

int main()
try{
  return 0; // I am here...
}
catch (...){
  cout << "I am 'catch'..." << endl; // This row wasn't called!
  return 1; // Oops... But the next `F10` key pressing jumps from the "try" 
  // block into this row!
}
Run Code Online (Sandbox Code Playgroud)

即在这种情况下,try\catch块不在括号中:

int main() { // start bracket
  try{
    return 0;
  }
  catch (...){
    return 1;
  }
} // end bracket
Run Code Online (Sandbox Code Playgroud)

这两种情况都是成功编译并且也可以工作,但是......在第一个版本中,当我逐步按下F10 …

c++ try-catch

11
推荐指数
1
解决办法
973
查看次数