小编Bro*_*ses的帖子

MSVC 在哪些方面不符合标准?

我读到 MSVC 不完全符合 ISO C++ 标准(德语维基百科和几个技术网站)。

  • C++ 标准在哪些方面不兼容?

c++ visual-c++

5
推荐指数
1
解决办法
805
查看次数

我的程序如何确定它是在32位还是64位Windows上运行?

这是我的问题.确定应用程序运行的位体系结构的最佳方法是什么?

我想要做的是:在64位服务器上,我希望我的应用程序读取64位数据源(存储在reg密钥Software\Wow6432Node\ODBC\ODBC.INI\ODBC数据源中),如果它的32位我想读取32位数据源,(即从Software\ODBC\ODBC.INI\ODBC数据源读取).

我可能会忽略这一点,但我不想关心我的应用程序运行的模式.我只是想知道操作系统是32位还是64位.

[System.Environment.OSVersion.Platform似乎并不适合我.它在我的本地xp机器和win2k8 64位服务器上返回Win32NT(即使我的所有项目都设置为目标'任何cpu')]

c# operating-system 32bit-64bit .net-2.0

5
推荐指数
1
解决办法
1501
查看次数

确定跨步数组是否重叠的算法?

在我正在使用的库中,我们有数据集(可能是其他数据集的子集),这些数据集以三维矩形跨步数组分布在内存中。也就是说,A可以将数组下标为A(i,j,k),其中每个索引的范围从零到某个上限,并且每个元素在内存中的位置由下式给出:

A(i,j,k) = A0 + i * A_stride_i + j * A_stride_j + k * A_stride_k
Run Code Online (Sandbox Code Playgroud)

这里A0是基本指针,而A_stride_iet al是尺寸跨度。

现在,由于这些数据集可能是其他数据集的子集,而不是每个数据集都占用各自独立的malloc分配的内存块,因此它们完全有可能重叠(其中重叠意味着A(i,j,k) < B(m,n,p)既不总是true也不总是false),并且如果它们重叠,它们可能彼此交错,或者它们可能彼此碰撞(其中碰撞表示A(i,j,k) == B(m,n,p)某些六分之一索引)。

问题就在这里。对两个数据集(例如,副本)的某些操作仅在数组彼此不冲突时才有效,但在它们以交错非冲突方式重叠时才有效。我想为两个数据集添加一个函数,无论两个数据集是否冲突。

是否存在以合理有效且直接的方式执行此操作的算法?

检查数据集是否重叠是很容易的,所以关键问题是:给定这种形式的两个数据集重叠,有什么有效的算法来确定它们是交织还是冲突?

例:

举一个简单的例子,假设我们的存储位置是从0到F(十六进制):

0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
Run Code Online (Sandbox Code Playgroud)

为了简单起见,我在这里也只考虑2D阵列。假设我们有一个大小为2,3(即0 <= i < 20 <= j < 3)的对象,其中一个stride_i = 1stride_j = 4为基地址2。这将被占用(占用的位置由它们的i,j对表示):

0  1  2 …
Run Code Online (Sandbox Code Playgroud)

arrays algorithm

5
推荐指数
1
解决办法
452
查看次数

如何通过一个字节的每个位

我不知道如何实现以下算法.

例如,我有int = 26,这是二进制的"11010".现在我需要实现1的一个操作,另一个操作为0,从左到右,直到字节结束.但我真的不知道如何实现这一点.也许我可以将二进制转换为char数组,但我不知道如何.btw,int仅在示例中等于26,在应用程序中它将是随机的.

c algorithm

5
推荐指数
3
解决办法
6870
查看次数

通过SSH运行'export'命令

当我从我的bashshell 运行以下内容时:

bash -c '(export abc=123 && echo $abc)'
Run Code Online (Sandbox Code Playgroud)

输出为"123".但是当我把它运行时ssh:

ssh remote-host "bash -c '(export abc=123 && echo $abc)'"
Run Code Online (Sandbox Code Playgroud)

没有输出.为什么是这样?有没有解决的办法?也就是说,有没有办法为我运行的命令设置环境变量ssh

注意:当我替换echo $abc标准之类echo $USERssh命令时,命令会按预期打印出远程计算机上的用户名,因为它已经设置好了.

我正在使用OpenSSH 4.3运行RHEL 5 Linux

ssh bash

5
推荐指数
1
解决办法
4929
查看次数

如何杀死Java进程的子进程?

我正在使用创建进程P1 Process P1= Runtime.exec(...).我的流程P1正在创建另一个流程,例如P2,P3 ....

然后我想杀死进程P1和P1创建的所有进程,即P2,P3 ......

P1.destroy() 只杀死P1,而不是它的子进程.

我也用谷歌搜索它,发现它是一个Java bug:http://bugs.sun.com/view_bug.do?video_id = 4770092

有没有人有任何关于如何做的想法?

java runtime process runtime.exec

5
推荐指数
1
解决办法
5444
查看次数

为什么编译器认为这个变量不是常数?

这是我的代码:

int main()
{
 const int LEN = 5;
 int x[LEN];
}
Run Code Online (Sandbox Code Playgroud)

VS10说:

错误C2057:预期的常量表达式

错误C2466:无法分配常量大小为0的数组

错误C2133:'x':未知大小

我甚至尝试了这个页面中的代码并且它给出了同样的问题(我评论了给出错误的代码,并且取消注释了正确的代码):http: //msdn.microsoft.com/en-us/library/eff825eh% 28VS.71%29.aspx

如果我正在尝试一个糟糕的编译器,我会认为这是编译器中的一个错误,但它是VS2010!

c c++ compiler-construction compiler-errors

3
推荐指数
1
解决办法
1496
查看次数

是否可以修改或访问程序计数器?

在阅读程序计数器时,我开始知道程序计数器的特殊之处在于无法直接修改其值.

是否有任何间接方式来访问/修改程序计数器的内容?

embedded assembly program-counter

3
推荐指数
1
解决办法
6819
查看次数

SSE中的SSE4内联汇编问题

Hello Everyone我想执行以下形式的内联汇编指令

BLENDPD xmm1,xmm2/m128, imm8
Run Code Online (Sandbox Code Playgroud)

我是内联装配的新手,所以我遇到了一些困难.我的代码是:

#include<iostream>
using namespace std;
int main()
{
  long long y;
  __asm("blendpd %0,$0xabcd000000001111abcd000000001111,$0x1":
    "=r" (y):
    );
  cout<<y;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的第一个错误是得到一个128位操作数,所以我使用了长十六进制数,但我仍然需要输出为128位,因为我希望2能够在屏幕上打印y.最重要的是我知道我的__asm语法是错误的,但无法弄清楚,加上我不确定使用英特尔或AT&T语法进行编译会在使用__asm时产生影响.

欢迎任何帮助.干杯! =)

编辑:我现在有这个版本,并得到一个未定义的函数错误.

  #include<iostream>
  #include<emmintrin.h>
  using namespace std;

int main()
{
const int mask=5;
__m128d v2 = _mm_set_pd(1.0, 2.0);
__m128d v1;
v1=_mm_blend_pd(v1, v2, mask);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ assembly gcc inline-assembly

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

使用嵌入式if和else if语句C++

继承我的代码我试图整理学校,在嵌入式if和else if语句中,当我尝试编译时它显示错误.

错误:期望在"else"之前的primary-expression';' 在别的之前

这两个都出现在每一行.

// This is a program to Calculate the volume of the sphere using the radius (a03.cpp)
// Written by: Jimmy Scott
// Date: 2/1/12
// Sources: Stackoverflow.com (else and if statements)


#include <iomanip>
#include <iostream>              
#include <string>

using namespace std;                

int main ()

{
    char vehicle;   
    float total;
    char over20;
    char old;
    int adults;
    int oldpass;
    char height;
    int youngpass;
    int bicycles;
    float length;

    cout<<"Fare Calculator by Jimmy Scott";
    cout<<"\n\n\n Are You Bringing a vehicle …
Run Code Online (Sandbox Code Playgroud)

c++ new-operator

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

使用Frank Luna的技术创建一个三维平面:什么是sinf和cosf?

我正在创建一个位于x和z轴上的三维平面,并且具有在y轴上延伸的小山.大部分代码如下所示:

float PeaksAndValleys::getHeight(float x, float z)const
{
    return 0.3f*( z*sinf(0.1f*x) + x*cosf(0.1f*z) );
}

void PeaksAndValleys::init(ID3D10Device* device, DWORD m, DWORD n, float dx)
{
    md3dDevice = device;

    mNumRows  = m;
    mNumCols  = n;

    mNumVertices = m*n;
    mNumFaces    = (m-1)*(n-1)*2;


    // Create the geometry and fill the vertex buffer. 

    std::vector<Vertex> vertices(mNumVertices);
    float halfWidth = (n-1)*dx*0.5f;
    float halfDepth = (m-1)*dx*0.5f;
    for(DWORD i = 0; i < m; ++i)
    {
        float z = halfDepth - i*dx;
        for(DWORD j = 0; j < n; …
Run Code Online (Sandbox Code Playgroud)

c c++

0
推荐指数
1
解决办法
395
查看次数

访问使用malloc分配的C++对象的成员?

[编者注:我已经编辑了标题,试图在将来对其他人有用.为了给回答者一个信誉,这只是"为什么这不起作用?" 他们回答的问题!]

top -> ...无论Node*尝试将哪些代码推送到矢量子代,以下代码都会在具有分段错误的行中崩溃.有谁知道这可能导致什么?

struct Node
{
    string data;
    struct Node* parent;
    vector<struct Node*> children;
};

struct Node* push(string word, struct Node* top)
{
    Node* temp = (struct Node*) malloc(sizeof(struct Node));
    temp -> data = word;
    temp -> parent = top;
    return temp;
}

int main()
{
    Node* top = push("blah", NULL);
    Node* temp = NULL;
    top -> children.push_back(temp);
}
Run Code Online (Sandbox Code Playgroud)

c++ malloc

-1
推荐指数
1
解决办法
220
查看次数

为什么在64位操作系统中,32位操作系统的4GB内存不等于2GB?

据我所知,"32位"等于2 ^ 32,这意味着我可以用32位操作系统定义4GB的内存.并且"64位"是2 ^ 64,允许15EB.因此,使用64位操作系统,我们可以在计算机中放入更多内存.

但是,我对另一点感到困惑.

我们可以在32位的情况下看到我们在系统中有(比方说)4GB的物理内存,我们将4GB除以32位整数的大小,我们可以存储一些整数(称为N)记忆.并且,在64位中,计算是4GB除以64位整数的大小,因此我们只能存储一半的整数.结果,对于64位,我们无法存储具有相同内存的整数.

这是否意味着微软通过在32位和64位版本的操作系统中将此内存显示为"4GB"来欺骗我们?

architecture computer-architecture computer-vision 32bit-64bit

-2
推荐指数
1
解决办法
861
查看次数