草庐IT

order_line

全部标签

c++ - 重置 C/C++ 预处理器 #line 物理文件/行

我有一个代码生成器,它将获取一些用户编写的代码并将其block嵌入到一个更大的生成文件中。我希望底层编译器在用户代码中存在缺陷时提供良好的诊断,但我也不希望生成的代码中的缺陷在不应该的情况下被错误归因于源代码。我打算在每个用户编写的代码块的开头发出#linelineNum"sourceFile"指令。但是,我找不到#line指令的任何文档,其中提到了将__LINE__和__FILE__重置为实际的技术一旦我离开用户提供的代码,就在生成的文件中添加一行。理想的解决方案类似于C#预处理器的#linedefault指令。我是否只需要跟踪我写了多少行并自己手动重置?或者是否有更好的方法,我可以

c++ - 如何在二维数组中绘制 "line"(屏幕模拟)

我正在开发一个将打印成位图(更具体地说是RAW,但这对问题并不重要)的项目,但我正在程序中使用二维数组。我希望能够为a、b、x和y的任意值绘制一条从点(a,b)到点(x,y)的线。我不需要任何花哨的东西,比如抗锯齿;在这一点上,最近邻很好。举个例子,假设我有一个5x5二维数组,如下所示:00,10,20,30,4001,11,21,31,4102,12,22,32,4203,13,23,33,4304,14,24,34,44现在,假设我想在04和42之间画一条线。我想要一种可靠的方法来得出这样的结果:0,0,0,0,00,0,0,0,00,0,0,1,10,1,1,1,01,1,0,0

c++ - std::notify_one() 中的 "a single total order"是什么意思?

我已阅读Concurrency:AtomicandvolatileinC++11memorymodel和Howstd::memory_order_seq_cstworks,它没有多大帮助,直接回答我的问题。来自https://en.cppreference.com/w/cpp/thread/condition_variable/notify_one:Theeffectsofnotify_one()/notify_all()andeachofthethreeatomicpartsofwait()/wait_for()/wait_until()(unlock+wait,wakeup,and

c++ - 比较算法的执行时间 : why does the order of execution matter?

每当我尝试比较两个竞争算法(使用C++)的执行时间时,我都会使用std::chrono作为以前在这个问题中建议的示例:MeasuringexecutiontimeofafunctioninC++但是,我总是注意到被比较算法的执行顺序对执行时间有显着影响。它甚至经常改变哪些竞争算法被认为是最快的。例如,假设我有两个算法algo1和algo2。我的意思是下面的代码:std::chrono::high_resolution_clock::time_pointstart0,start1;std::chrono::high_resolution_clock::time_pointend0,end

c++ - "static initialization order fiasco"是 constexpr 变量的关注点吗?

如果我在一个翻译单元中用非默认值初始化一个constexpr变量foo然后初始化另一个constexpr变量bar和foo在另一个翻译单元中bar是否有可能在foo之前初始化导致bar由零或默认初始化的foo初始化。即,与非constexpr情况(静态初始化顺序惨败生效)不同,编译器和链接器会分析依赖顺序以保证正确的结果吗?此外,constexpr变量模板如何受到影响?它们的初始化顺序在单个翻译单元内未定义。首选C++17标准答案。更新:这是一个最小的例子。有用;那就是问题所在。在这一点上,我99%确定这是安全的TheStaticInitializationOrderFiasco(TS

c++ - std::memory_order 和三个线程的同步谜题

这是一个关于std::memory_order的问题C++11中的规则,当涉及到三个线程时。比如说,一个线程producer保存一个值并设置一个标志。然后,另一个线程relay在设置另一个标志之前等待这个标志。最后,第三个线程consumer等待来自relay的标志,这应该表明data已准备好供消费者使用。这是一个最小程序,采用C++引用(http://en.cppreference.com/w/cpp/atomic/memory_order)中示例的样式:#include#include#includestd::atomicflag1=ATOMIC_VAR_INIT(false);s

c++ - std::memory_order_seq_cst 是如何工作的

我从以下位置获取了有关std::memory_order_seq_cst的示例:http://en.cppreference.com/w/cpp/atomic/memory_order#include#include#includestd::atomicx={false};std::atomicy={false};std::atomicz={0};voidwrite_x(){x.store(true,std::memory_order_seq_cst);}voidwrite_y(){y.store(true,std::memory_order_seq_cst);}voidread_x_

c++ Bresenham's line algorithm 绘制圆弧和旋转

我正在寻找使用Bresenham直线算法制作圆弧的方法。该算法绘制完美的圆,但是如果我需要绘制圆弧(从0到Pi)并将其旋转30度(例如)怎么办?voidDrawCircle(HDChdc,intx0,inty0,intradius){intx=0;inty=radius;intdelta=2-2*radius;interror=0;while(y>=0){//SetPixel(hdc,x0+x,y0+y,pencol);SetPixel(hdc,x0+x,y0-y,pencol);//SetPixel(hdc,x0-x,y0+y,pencol);SetPixel(hdc,x0-x,y0

c++ - VIM 语法折叠 : disable folding multi-line comments

我在vim7.3中使用“语法”折叠方法。在.vimrc中:setfoldmethod=syntax当我打开Test.cpp时,包含:/*Afunctionwithamulti-line*comment.Thistakesatleast*fourlinesandIwanttobe*abletoreadallofthem.*/voidTheFunction(){DoStuff();}折叠时我看到以下内容:+--5lines:Afunctionwithamulti-line---------------------------------------------voidTheFunction

c++ - boost 日志 : Support file name and line number

我试图让我的团队远离log4cxx并尝试使用Boost.Logv2。我们目前的log4cxxpattern很简单:log4cxx::helpers::Propertiesprop;prop.setProperty("log4j.rootLogger","DEBUG,A1");prop.setProperty("log4j.appender.A1","org.apache.log4j.ConsoleAppender");prop.setProperty("log4j.appender.A1.layout","org.apache.log4j.PatternLayout");prop.se