小编klm*_*123的帖子

与GCC的pragma GCC诊断警告

我使用gcc 4.5.1并获得如下警告:

warning: expected [error|warning|ignored] after '#pragma GCC diagnostic'
Run Code Online (Sandbox Code Playgroud)

原因是"#pragma GCC诊断推送",GCC <4.6不存在.

我无法更改代码(不是我的代码)和gcc版本.如何禁用这些警告?一些gcc标志可能是?

PS我在GCC/C++中看到了为什么"pragma GCC诊断推送"弹出警告?,我的问题没有答案.

c++ warnings

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

常量变量与常量参考

在一些C++源代码中,我看到表达式结果可以保存为常量崇敬.像这样:

 const int &x = y + 1;
Run Code Online (Sandbox Code Playgroud)

这是什么意思?有没有这方面的文件?我找不到..


对我来说,它似乎相当于:

 const int x = y + 1;
Run Code Online (Sandbox Code Playgroud)

因为程序的结果保持不变.它真的相同吗?

如果是,为什么语言允许第一种方式来编写它?看起来很混乱.

如果没有什么区别?

c++ reference constant-expression

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

将浮点数与零进行比较的标准方法是什么?

可疑问题是:将浮点数与零进行比较的标准方法是什么?

据我所知直接比较:

if ( x == 0 ) { 
  // x is zero?
} else {
  // x is not zero??
Run Code Online (Sandbox Code Playgroud)

可以使用浮点变量失败.

我以前用过

float x = ...
...
if ( std::abs(x) <= 1e-7f ) { 
  // x is zero, do the job1
} else {
 // x is not zero, do the job2
...
Run Code Online (Sandbox Code Playgroud)

我在这里找到相同的方法.但我看到两个问题:

  1. 随机幻数1e-7f(或上面链接的0.00005).
  2. 代码更难阅读

这是一个常见的比较,我想知道是否有一个标准的简短方法来做到这一点.喜欢

 x.is_zero();
Run Code Online (Sandbox Code Playgroud)

c++ floating-point

4
推荐指数
2
解决办法
3840
查看次数

如何检查std :: vector超出范围访问权限

[在此发现一个疑问:C++ - 检测超出范围的访问 ]

如果我有一个"超出范围矢量访问"的程序,像这样:

  std::vector<int> A(2);
  ...
  A[10] = 3;
Run Code Online (Sandbox Code Playgroud)

我有办法确定找到这个错误吗? 我的意思是在调试模式下编译并查看某些断言是否会停止执行.

到目前为止,我已经自己查了一下.但可能是我不必编写额外的代码?


PS我当然检查过断言.它没有打电话.

有了这个程序:

#include <vector>

int main() {
  std::vector<int> A(2);
  A[10] = 3;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

汇编

g++ 1.cpp -O0; ./a.out
Run Code Online (Sandbox Code Playgroud)

所以看起来std在代码中没有断言,我不禁想知道为什么他们不做这么简单的检查.

c++ std outofrangeexception

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

调用非统一内存访问(NUMA)的架构?

根据维基:非统一内存访问(NUMA)是一种用于多处理的计算机内存设计,其中内存访问时间取决于相对于处理器的内存位置.

但目前尚不清楚它是关于任何内存,包括缓存还是主内存.

例如,Xeon Phi处理器具有下一个架构: 在此输入图像描述

所有内核对内存(GDDR)的内存访问都是相同的.同时对于不同内核的内存访问L2缓存是不同的,因为检查了第一个本机L2缓存,然后通过环检查其他内核的L2缓存.是NUMA还是UMA架构?

cpu intel cpu-architecture numa

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

两个编译器彼此不喜欢

我正在尝试使用ICC编译代码并面临错误:

/opt/intel/composer_xe_2013.2.146/compiler/include/xmmintrin.h(82): error:
linkage specification is incompatible with previous "_mm_malloc" (declared at
line 38 of "/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/mm_malloc.h")
extern void* __ICL_INTRINCC _mm_malloc(size_t, size_t);
Run Code Online (Sandbox Code Playgroud)

看起来像ICC和GCC冲突.但我无法从$ PATH中排除GCC.如何解决这种困惑?

c++ gcc compilation icc

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

最快的无条件排序算法

我有一个函数,它可以采用两个元素并按升序返回:

void Sort2(int &a, int &b) { 
  if (a < b) return; 
  int t = a; 
  a = b; 
  b = t; 
}
Run Code Online (Sandbox Code Playgroud)

如果不允许使用额外的条件运算符,使用此函数对具有N个条目的数组进行排序的最快方法是什么? 这意味着我的整个程序应该如下所示:

int main(){
  int a[N];
     // fill a array

  const int NS = ...; // number of comparison, depending on N.
  const int c[NS] = { {0,1}, {0,2}, ... }; // consequence of indices pairs generated depending on N.
  for( int i = 0; i < NS; i++ ) {
    Sort2(a[c[i][0]], a[c[i][1]]);
  }
     // sort is …
Run Code Online (Sandbox Code Playgroud)

sorting algorithm

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

Checksum in C++

I need help with writing a code in C++ to do a 16 bit checksum.

The idea is to get data input from user (a string), convert it to binary form, then calculate checksum and put it in my data packet. I don't have any checksum type specification... I thought XORing the 16 bits would be a good idea. I have the following class packet given:

class packet
{
private:
    string message;
    unsigned int checksum;  // this is a 16 …
Run Code Online (Sandbox Code Playgroud)

c++ checksum

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

为什么用"scriptName"调用脚本不起作用?

我有一个简单的脚本cmakeclean来清理cmake临时文件:

#!/bin/bash -f

rm CMakeCache.txt
rm *.cmake
Run Code Online (Sandbox Code Playgroud)

我称之为

$ cmakeclean
Run Code Online (Sandbox Code Playgroud)

它确实删除了CMakeCache.txt,但它没有删除cmake_install.cmake:

rm: *.cmake: No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我运行它时:

$ . cmakeclean
Run Code Online (Sandbox Code Playgroud)

它确实删除了两者.

有什么区别,我可以使这个脚本像通常的linux命令一样工作(没有.在前面)?

PS我确信两次都是相同的脚本执行.为了检查这一点,我echo meme在脚本中添加并以两种方式重新运行它.

linux macos bash

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

什么时候把"?>"放在php文件的末尾?

查看几个站点的代码我注意到一些php文件?>在文件末尾有一些没有.这不重要 - 如果确实如此,我什么时候必须放在?>文件的末尾,什么时候不能?

php

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