Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。


12
const char * const vs const char *?
我正在运行一些示例程序来重新熟悉C ++,并且遇到了以下问题。首先,下面是示例代码: void print_string(const char * the_string) { cout << the_string << endl; } int main () { print_string("What's up?"); } 在上面的代码中,print_string的参数可能改为const char * const the_string。哪个更正确? 我知道区别在于一个是指向常量字符的指针,而另一个是指向常量字符的指针。但是为什么这两个都起作用?什么时候有意义?
110 c++  c 

9
为何将int除以2会产生正确的值?
以下代码段中的结果如何 int a = 7; int b = 3; double c = 0; c = a / b; c最终得到的值为2,而不是人们所期望的2.3333。如果a和b是双打,答案的确变为2.333。但是可以肯定的是,因为c 已经是双精度数,它应该与整数一起使用吗? 那么怎么int/int=double不起作用呢?

4
C / C ++ NaN常数(文字)?
是否可以在C / C ++中将分配NaN给double或float?像在JavaScript中一样,您可以:a = NaN。因此,以后您可以检查变量是数字还是否。
110 c++  nan 


8
Qt:找不到-lGL错误
我刚刚重新安装了QtCreator,创建了新项目(Qt Application),编译后得到了这个: /usr/bin/ld: **cannot find -lGL** collect2: error: ld returned 1 exit status make: *** [untitled1] Error 1 18:07:41: The process "/usr/bin/make" exited with code 2. Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit) When executing step 'Make' (项目为空,我没有提交任何更改) 基于Qt 5.1.0(32位) Ubuntu 13.04的Qt Creator 2.7.2 我该如何解决这个问题?


7
C ++中的异常如何工作(在幕后)
我一直看到人们说例外情况很慢,但我从未见过任何证据。因此,我将询问异常在后台如何工作,而不是询问它们是否存在,以便我可以决定何时使用它们以及它们是否缓慢。 据我所知,异常与执行多次返回相同,不同之处在于它还会在每次返回之后检查是否需要执行另一个操作或停止操作。如何检查何时停止返回?我猜有第二个堆栈保存异常的类型和堆栈位置,然后它会返回直到到达那里。我还猜测第二个堆栈唯一碰到的是一次掷球和每次尝试/接球。AFAICT使用返回码实施类似行为将花费相同的时间。但这只是一个猜测,所以我想知道真正发生了什么。 异常如何真正起作用?

4
不管结果如何,最快的整数除法支持零除法?
摘要: 我正在寻找最快的计算方法 (int) x / (int) y 毫无例外的y==0。相反,我只想要一个任意结果。 背景: 在对图像处理算法进行编码时,我经常需要除以(累积的)alpha值。最简单的变体是带有整数算术的纯C代码。我的问题是,对于具有的结果像素,通常会得到零除误差alpha==0。但是,这恰好是像素,其结果根本不重要:我不在乎使用的像素的颜色值alpha==0。 细节: 我正在寻找类似的东西: result = (y==0)? 0 : x/y; 要么 result = x / MAX( y, 1 ); x和y是正整数。该代码在嵌套循环中执行了很多次,因此我正在寻找一种摆脱条件分支的方法。 当y不超过字节范围时,我对解决方案感到满意 unsigned char kill_zero_table[256] = { 1, 1, 2, 3, 4, 5, 6, 7, [...] 255 }; [...] result = x / …


17
如何在C ++ / Linux中创建目录树?
我想要一种简单的方法来在C ++ / Linux中创建多个目录。 例如,我想在目录中保存文件lola.file: /tmp/a/b/c 但是如果目录不存在,我希望它们可以自动创建。一个可行的例子将是完美的。
109 c++  linux  directory 

10
C / C ++行号
为了调试目的,我可以在C / C ++编译器中获得行号吗?(某些编译器的标准方式或特定方式) 例如 if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation)

6
如何使用CMake将C ++程序与Boost链接
将程序与Ubuntu下的Boost库链接时,我的CMake文件应该是什么样子? 运行期间显示的错误make: main.cpp:(.text+0x3b): undefined reference to `boost::program_options::options_description::m_default_line_length' 主文件非常简单: #include <boost/program_options/options_description.hpp> #include <boost/program_options/option.hpp> using namespace std; #include <iostream> namespace po = boost::program_options; int main(int argc, char** argv) { po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ; return 0; } 我已经做到了。我添加到CMake文件中的唯一行是: target_link_libraries( my_target_file ${Boost_PROGRAM_OPTIONS_LIBRARY} )
109 c++  boost  cmake 

12
虚拟函数和vtable如何实现?
我们都知道C ++中有什么虚函数,但是如何在深层次上实现它们呢? 是否可以在运行时修改vtable甚至直接访问vtable? 该vtable是否适用于所有类,或者仅适用于至少具有一个虚函数的类? 对于至少一个条目的函数指针,抽象类是否仅具有NULL? 拥有一个虚拟函数会减慢整个班级吗?还是仅调用虚拟函数?速度是否会受到影响(无论是否实际覆盖了虚函数),或者只要它是虚函数,速度就不会起作用。

5
为什么rand()%6有偏见?
在阅读如何使用std :: rand时,我在cppreference.com上找到了此代码 int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased 右边的表达式有什么问题?尝试了一下,它完美地工作。
109 c++  random  std 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.