小编Dan*_*cci的帖子

Cmake无法为Visual Studio 10 amd64配置项目

我正在尝试让CMAKE为x64架构的msvc 10 express版创建一个项目.我安装了MSVC 2010 Express和Windows SDK 7.1.

如果我正常启动CMake我可以创建一个32位项目,但它无法创建一个64位项目.我也尝试从Windows SDK命令提示符(cl cmd映射到x64版本)中启动CMAKE但是它仍然失败,但以下内容.

Found Windows SDK v7.1: C:\Program Files\Microsoft SDKs\Windows\v7.1\
Check for working C compiler using: Visual Studio 10 Win64
Check for working C compiler using: Visual Studio 10 Win64 -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "c:/Program Files (x86)/Microsoft Visual Studio
  10.0/VC/bin/amd64/cl.exe" is not able to compile a simple test program.

  It fails with the following output:

   Change Dir: C:/Users/Dan/Desktop/pclt/PCL/bin/CMakeFiles/CMakeTmp



  Run Build Command:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
  cmTryCompileExec1400574213.vcxproj /p:Configuration=Debug

  Microsoft …
Run Code Online (Sandbox Code Playgroud)

cmake visual-c++ point-cloud-library

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

将端口作为变量传递 - AVR

是否可以使用AVR端口作为可以传递的变量?

例如

LED myLed(PORTA,7);   //myLED hooked to PORTA, Pin 7
Run Code Online (Sandbox Code Playgroud)

我想让LED能够采用任何PORT/Pin组合,所以我宁愿不用硬编码.

请注意,PORT定义为:

#define PINA  _SFR_IO8(0x00)
#define DDRA  _SFR_IO8(0x01)
#define PORTA _SFR_IO8(0x02)    
Run Code Online (Sandbox Code Playgroud)

PORTA符号解析为(*(volatile uint8_t*)((0x02)+ 0x20))

我相信这将允许我做类似下面的事情,但我不确定我是否需要volatile关键字,也不确定它是否真的按预期工作

class LED{
public:
    LED(volatile uint8_t* port, uint8_t pin);
    {
        Port=port;
        Pin=pin;
    }
    void write(bool val)
    {
        if(val) (*Port) |= 1 << Pin;
        else    (*Port) &= ~(1 << Pin);
    }

private:
    uint8_t  Pin
    volatile uint8_t* Port;
}
Run Code Online (Sandbox Code Playgroud)

最后,有没有办法将端口/引脚设置为LED构造器的输出?这将涉及为给定端口#找到相对DDR#寄存器.我可以假设和DDR#将永远是&PORT#-1?

c++ io avr

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

Lexing VHDL'(tick)令牌

在VHDL中,'字符可以用于封装字符标记ie '.',也可以用作属性分隔符(类似于CPP的:: token)ie string'("hello").

解析包含字符的属性名称时会出现此问题ie string'('a','b','c').在这种情况下,一个天真的词法分析器会错误地将第'('一个标记为一个字符,并且所有下面的实际字符都将被搞砸.

从2007年开始comp.lang.vhdl google group中有一个帖子,它提出了一个类似的问题,题为" Lexing the'char ",其中有一个用户diogratia的答案

        case '\'':                          /* IR1045 check */

            if (    last_token == DELIM_RIGHT_PAREN ||
                    last_token == DELIM_RIGHT_BRACKET ||
                    last_token == KEYWD_ALL ||
                    last_token == IDENTIFIER_TOKEN ||
                    last_token == STR_LIT_TOKEN ||
                    last_token == CHAR_LIT_TOKEN || ! (buff_ptr<BUFSIZ-2) )
                token_flag = DELIM_APOSTROPHE;
            else if (is_graphic_char(NEXT_CHAR) &&
                    line_buff[buff_ptr+2] == '\'') { CHARACTER_LITERAL:
                buff_ptr+= 3;               /* lead,trailing \' and char */
                last_token = CHAR_LIT_TOKEN; …
Run Code Online (Sandbox Code Playgroud)

vhdl flex-lexer grammar-kit

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

"if(pointer)delete ponter"即使没有初始化指针也会删除

我写了一个非常小的Observeable实现.当观察者注册时,它会删除旧观察者并启动新观察者.但是,即使它尚未初始化,它也会尝试删除指针.代码如下:

Observable.h

class Observable
{
public:
    Observable();
    virtual void registerObserver(Observer * O);
    virtual ~Observable();

protected:
    Observer * myObserver;
};
Run Code Online (Sandbox Code Playgroud)

Observable.cpp

#include "Observable.h"

Observable::Observable()
{
}


Observable::~Observable()
{
    if(myObserver)
        delete myObserver;
}

void Observable::registerObserver(Observer * O)
{
    if(myObserver)
        delete myObserver;
    myObserver=O;
}
Run Code Online (Sandbox Code Playgroud)

所有主要做的是

GUI * gui = new GUI();      // GUI extends Observer
Model * m = new Model();    //Model extends Observable
m->registerObserver(gui);   //I get a segfault inside this call
Run Code Online (Sandbox Code Playgroud)

如果我单步执行registerObserver,我会看到即使我从未初始化myObserver,语句if(myObserver)的计算结果为true.这导致未初始化的指针被删除并且出现seg错误. …

c++ qt pointers segmentation-fault

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