我正在尝试让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) 是否可以使用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?
在VHDL中,'字符可以用于封装字符标记ie '.',也可以用作属性分隔符(类似于CPP的:: token)ie string'("hello").
解析包含字符的属性名称时会出现此问题ie string'('a','b','c').在这种情况下,一个天真的词法分析器会错误地将第'('一个标记为一个字符,并且所有下面的实际字符都将被搞砸.
从2007年开始comp.lang.vhdl google group中有一个帖子,它提出了一个类似的问题,题为" Lexing the'char ",其中有一个用户diogratia的答案
Run Code Online (Sandbox Code Playgroud)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; …
我写了一个非常小的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++ ×2
avr ×1
cmake ×1
flex-lexer ×1
grammar-kit ×1
io ×1
pointers ×1
qt ×1
vhdl ×1
visual-c++ ×1