问题列表 - 第7252页

如何在flex和bison中使用C++?

我有一个学校项目,我们需要使用flex和bison.我想使用C++,这样我就可以访问我编写的STL和我自己的类.我们获得了以下Makefile:

CC = gcc 
CFLAGS = -g 

OBJs = parse.tab.o symtab.o attr.o lex.yy.o 

default: parser

parser: ${OBJs}
    ${CC} ${CFLAGS} ${OBJs} -o parser -lfl

lex.yy.c: scan.l parse.tab.h attr.h
    flex -i scan.l

parse.tab.c: parse.y attr.h symtab.h
    bison -dv parse.y

parse.tab.h: parse.tab.c

clean:
    rm -f parser lex.yy.c *.o parse.tab.[ch] parse.output

depend:
    makedepend -I. *.c
Run Code Online (Sandbox Code Playgroud)

scan.l和parse.y有一些初始的flex/bison东西来生成扫描器和解析器.我需要将自己的东西添加到这些文件中.symtab.{h,c}应该是符号表的实现.attr.{h,c}用于某些属性魔法.我想制作symtab.ca .cc文件,以便我可以使用STL.我还有其他原因想要使用C++.

我尝试使用parse.ypp文件,以便生成.cpp文件.但问题是我没有得到正确的.h文件.我将Makefile更改为如下所示:

CC = g++          # Change gcc to g++
CFLAGS = -g 

OBJs = lex.yy.o parse.tab.o symtab.o attr.o

default: lex.yy.c parser    # added lex.yy.c so I could …
Run Code Online (Sandbox Code Playgroud)

c c++ bison flex-lexer

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

尝试/捕捉和线程

我知道为什么,但我想问一下是否有人很清楚为什么在一个线程中引发的异常永远不会被启动它的代码捕获.这是一些非常简单的代码来演示我的意思:

using System;
using System.Collections.Generic;
using System.Threading;

namespace TestCrash
{
    class Program
    {
        private static void Crash(object control)
        {
            AutoResetEvent are = (AutoResetEvent)(((object[])control)[0]);
            are.Set();
            throw new Exception("Burn baby burn");
        }
        static void Main(string[] args)
        {
            try
            {
                List<WaitHandle> waitHandles = new List<WaitHandle>();
                for (int i = 0; i < 100; i++)
                {
                    AutoResetEvent are = new AutoResetEvent(false);
                    waitHandles.Add(are);
                    object[] procControl = new object[] { are };
                    ThreadPool.QueueUserWorkItem(Crash, procControl);
                    WaitHandle.WaitAll(waitHandles.ToArray());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# multithreading try-catch

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

Xaml继承的样式

在XAML中是否有办法设置适用于所有控件的样式?例如下面我想在我的所有控件上留一个余量.我可以通过将TargetType更改为Button,CheckBox等来为每种类型添加样式.相反,我想设置它,就像我在下面设置从Control继承的所有类型的样式:

<UserControl x:Class="MyPanel"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Height="300" Width="300">
    <UserControl.Resources>
        <Style TargetType="Control">
            <Setter Property="Margin" Value="3"/>
        </Style>
</UserControl.Resources>
    <StackPanel>
        <Button>My Button</Button>
        <CheckBox>My Checkbox</CheckBox>
    </StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

wpf xaml styles

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

在命令式编程之前是否应该教授函数式编程?

在我看来,函数式编程是一件好事.它消除了状态,使得自动使代码并行运行变得更加容易.

许多首先教授命令式编程风格的程序员发现学习函数式编程非常困难,因为它是如此不同.我开始怀疑那些先学习函数式编程的程序员是否会发现很难开始命令式编程.看起来它不会像其他方式那么难,所以我认为如果更多的程序员首先学习函数式编程会是一件好事.

所以,我的问题是,如果在命令式之前在学校教授函数式编程,那么,为什么从它开始并不常见?

functional-programming

31
推荐指数
4
解决办法
4078
查看次数

NSArray添加元素

我必须创建一个动态NSArray,也就是说,我不知道数组的大小或数组将具有的元素.需要动态地将元素添加到数组中.我查看了NSArray类引用.有一个名为arrayWithObjects的方法,应该在初始化数组本身时使用.但我不知道如何实现我需要做的事情.

我需要做一些像下面这样的事情:

NSArray *stringArray = [[NSArray init] alloc] ;  
for (int i = 0; i < data.size; i++){  
    stringArray.at(i) = getData(i);
}
Run Code Online (Sandbox Code Playgroud)

objective-c nsarray

39
推荐指数
2
解决办法
9万
查看次数

识别C项目中所有变量的类型

我正在尝试编写一个程序来检查某些C源代码是否符合变量命名约定.为此,我需要分析源代码并确定所有本地和全局变量的类型.

最终结果几乎肯定是一个python程序,但分析代码的工具可以是python模块,也可以是生成易于解析的报告的应用程序.或者(更多内容如下),它可以是一种从编译器中提取信息的方式(通过报告或类似方式).如果有用的话,很可能是Keil ARM编译器.

我一直在尝试使用ctags,这对于查找所有typedef和宏定义等非常有用,但它没有提供直接查找变量类型的方法,特别是当定义分布在多行时(我希望它不会!).

示例可能包括:

static volatile u8 var1; // should be flagged as static and volatile and a u8 (typedef of unsigned 8-bit integer)
volatile   /* comments */   
    static /* inserted just to make life */
        u8 /* difficult! */   var2 =
        (u8) 72
           ; // likewise (nasty syntax, but technically valid C)
const uint_16t *pointer1;  // flagged as a pointer to a constant uint_16t
int * const pointer2; // flagged as a constant pointer to …
Run Code Online (Sandbox Code Playgroud)

c python variables code-analysis coding-style

7
推荐指数
1
解决办法
2453
查看次数

如何将方括号括起到已在T-SQL中设置为一个变量值的变量?

我从Net获得了一个脚本,用于计算来自某个SQL Server实例的数据文件和事务日志文件的使用情况.如果没有具有空格的数据库名称或不太长,则脚本可以正常工作.但是,如果数据库名称有空格或太长,我收到错误消息"消息911,级别16,状态1,行1无法在sysdatabases中找到数据库'测试'的条目.找不到具有该名称的条目.确保正确输入名称." 在示例错误消息中,"Test"具有"Test DB"的完整数据库名称,该名称具有空格.请参阅以下代码:

--Script to calculate information about the Data Files

SET QUOTED_IDENTIFIER OFF
SET NOCOUNT ON

DECLARE @dbname varchar(50)
declare @string varchar(250)
set @string = ''

create table #datafilestats
(   Fileid tinyint,
    FileGroup1 tinyint,
    TotalExtents1 dec (8, 2),
    UsedExtents1 dec (8, 2),
    [Name] varchar(50),
    [FileName] sysname )

create table #dbstats
(   dbname varchar(50),
    FileGroupId tinyint,
    FileGroupName varchar(25),
    TotalSizeinMB dec (8, 2),
    UsedSizeinMB dec (8, 2),
    FreeSizeinPercent dec (8, 2))



DECLARE dbnames_cursor CURSOR FOR SELECT name FROM master..sysdatabases
OPEN …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

Emacs:将主机名添加到模式行?

我想在我的模式行中的某处显示(getenv"HOSTNAME")的输出.我的显示时间模式设置为't',所以我已经在模式行中显示时间,负载级别和邮件标志.是否有一种简单的方法来获取主机名?

我想拥有这个,因为我正在使用3个远程计算机,所有正在运行的emacs来自一组常见的初始化文件,我想要一些快速简单的不显眼方式来了解我正在使用哪台计算机.

emacs

11
推荐指数
2
解决办法
3188
查看次数

有条件地在SQL Server中创建用户

如果用户尚不存在,我想在数据库'mydb'中创建用户'foo'.目前我的脚本如下所示:

USE [mydb]
CREATE USER [foo] FOR LOGIN [foo]
GO
Run Code Online (Sandbox Code Playgroud)

但是,如果用户已存在,则会失败并显示错误消息:

Msg 15023, Level 16, State 1, Line 2
User, group, or role 'jsrvpp' already exists in the current database.
Run Code Online (Sandbox Code Playgroud)

如何更改脚本以便仅在用户不存在时才创建用户?

谢谢!

sql-server sql-server-2005

23
推荐指数
3
解决办法
4万
查看次数

MySQL ON DUPLICATE KEY - 最后一次插入ID?

我有以下查询:

INSERT INTO table (a) VALUES (0)
  ON DUPLICATE KEY UPDATE a=1
Run Code Online (Sandbox Code Playgroud)

我想要插入或更新的ID.通常我会运行第二个查询以获取此信息,因为我认为insert_id()只返回'inserted'ID而不是更新的ID.

有没有办法INSERT/UPDATE并检索行的ID而不运行两个查询?

mysql insert-id

125
推荐指数
2
解决办法
7万
查看次数