我正在使用C语言在微控制器中工作.在这个特定的微观中,必须使用#pragma以下方式定义中断:
static void func();
#pragma INTERRUPT func <interrupt_address> <interrupt_category>
static void func() { /* function body */ }
Run Code Online (Sandbox Code Playgroud)
该<interrupt_address>是向量表的中断地址.的<interrupt_category>是1或2.例如,以限定在端口的中断0销0:
static void _int_p00();
#pragma INTERRUPT _int_p00 0x10 1
static void _int_p00() { (*isr_p00)(); }
Run Code Online (Sandbox Code Playgroud)
我们在别处定义实际的中断服务程序,并使用函数指针(如isr_p00示例中所示)来执行它们.
如果可以使用宏定义中断将是方便的.我想用以下方式定义一个宏:
#define DECLARE_INTERRUPT(INT_NAME, INT_CAT) \
static void _int_##INT_NAME(); \
#pragma INTERRUPT _int_##INT_NAME INT_NAME##_ADDR INT_CAT \
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
Run Code Online (Sandbox Code Playgroud)
编译器抛出以下错误:
Formal parameter missing after '#'
Run Code Online (Sandbox Code Playgroud)
指示以下行:
static void _int_##INT_NAME() { (*isr_##INT_NAME)(); }
Run Code Online (Sandbox Code Playgroud)
我想预处理器指令不能在#define …
我写了一个派生类QGraphicsScene.在某一点上,我需要从场景中删除所有项目,我希望物品被物理销毁(析构函数被调用).我尝试了以下方法:
QList<QGraphicsItem*> all = items();
for (int i = 0; i < all.size(); i++)
{
QGraphicsItem *gi = all[i];
removeItem(gi);
delete gi; // warning at this line
}
Run Code Online (Sandbox Code Playgroud)
Qt Creator发出警告:警告:C4150:删除指向不完整类型'QGraphicsItem'的指针; 没有破坏者叫
我不知道为什么会这样.QGraphicsItem有虚拟析构函数所以应该从内存中删除项目.
如果这不是正确的方法,我怎么能删除所有QGraphicsItem的QGraphicsScene?请注意,我知道删除场景后,所有项目也将被删除.但我想从场景中删除项目并绘制其他项目.我希望从内存中删除已删除的项目.
如何获取特定用户对存储库的提交历史记录?
我可以通过命令行或TortioseCVS访问CVS,因此使用任一方法的解决方案就足够了.
我QTableView在我的程序的主UI中有一个.当用户右键单击表格的单元格时,我想显示弹出菜单,并在从菜单中选择一个选项时采取适当的操作.
我正在使用Qt Creator 1(Qt版本4.5).我怎样才能做到这一点?
我正在为一个C#项目的Visual Studio 2008(安装和部署>安装项目)中开发的自定义安装程序工作.我想在安装完成后运行批处理文件(*.bat).我怎样才能做到这一点?
如果我有以下内容:
struct LineChartScene::LineChartSceneImpl
{
enum ContextMenuAction {ShowLabels, ShowPoints, SaveAsImage};
};
Run Code Online (Sandbox Code Playgroud)
如何访问ShowLabels,ShowPoints等外面LineChartScene::LineChartSceneImpl结构?我认为LineChartScene::LineChartSceneImpl::ContextMenuAction::ShowLabels会工作,但事实并非如此.我正在使用C++,Qt Creator 2.2.1.
我有一个包含以下内容的文本文件:
"abc","def","ghi"
Run Code Online (Sandbox Code Playgroud)
以下工作正常读取文件内容:
int main()
{
char name[1024] = {0};
FILE *file = fopen("file.txt", "r");
while(1)
{
if (fscanf(file, " %[\",]s ", name) == EOF)
break;
if (fscanf(file, " %[a-zA-Z]s ", name) == EOF)
break;
printf("%s\n", name);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,以下失败:
int main()
{
char name[1024] = {0}, garbage[5];
FILE *file = fopen("file.txt", "r");
while(1)
{
if (fscanf(file, " %[\",]s%[a-zA-Z]s ", garbage, name) == EOF)
break;
printf("%s\n", name);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用MSVC++ 08.我错过了什么?我在寻找与单一的解决方案fscanf()中的while循环.
我正在使用Qt Creator 2.0.1(Qt 4.7).我需要一个可以垂直容纳多个复选框的小部件.用户与其他UI元素交互时,复选框将动态添加到窗口小部件.小部件将具有固定的宽度和高度,因此如果复选框太多,则应显示垂直滚动条.
我想要的是,想象一下QListWidget,其中列表项可以是复选框.
哪个小部件可以让我这样做?
谢谢.