小编por*_*ges的帖子

将无保留标识符作为gcc中的内置宏的原因是什么?

今天我偶然发现了一个相当有趣的编译器错误:

int main() {
  int const unix = 0; // error-line
  return unix;
}
Run Code Online (Sandbox Code Playgroud)

使用gcc 4.3.2给出以下消息(是的,古老的......):

error: expected unqualified-id before numeric constant
Run Code Online (Sandbox Code Playgroud)

这绝对是令人困惑的.

幸运的是,clang(3.0)更有帮助(像往常一样):

error: expected unqualified-id
  int const unix = 0
            ^
<built-in>:127:14: note: expanded from:
#define unix 1
             ^
Run Code Online (Sandbox Code Playgroud)

我当然没想到unix,既不是用大写字母写的,也不是用下划线作为宏,特别是内置的宏.

我检查了gcc中的预定义宏,并且有2个(在我的平台上)使用"未保留"符号:

$ g++ -E -dM - < /dev/null | grep -v _
#define unix 1
#define linux 1
Run Code Online (Sandbox Code Playgroud)

所有其他的都是具有前导下划线的"表现良好"的宏,使用传统的保留标识符,示例:

#define __linux 1
#define __linux__ 1
#define __gnu_linux__ 1

#define __unix__ 1
#define __unix 1

#define __CHAR_BIT__ …
Run Code Online (Sandbox Code Playgroud)

c++ unix linux macros history

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

约翰麦卡锡对*色情编程*的意思是什么?

Lisp历史中,麦卡锡写道:

翻译的出乎意料的外表倾向于冻结语言的形式,并且一些决定对于"递归函数......"而言相当轻松,后来证明是不幸的.这些包括用于条件表达式的COND表示法,其导致不必要的括号深度,并且使用数字零来表示空列表NIL和真值false.除了鼓励色情编程外,对地址0进行特殊解释也给后来的所有实施带来了困难.

他在说什么?

lisp history terminology

24
推荐指数
5
解决办法
1779
查看次数

TcpListener:如何在等待AcceptTcpClientAsync()时停止侦听?

我不知道如何在异步方法等待传入连接时正确关闭TcpListener.我在SO上找到了这个代码,这里是代码:

public class Server
{
    private TcpListener _Server;
    private bool _Active;

    public Server()
    {
        _Server = new TcpListener(IPAddress.Any, 5555);
    }

    public async void StartListening()
    {
        _Active = true;
        _Server.Start();
        await AcceptConnections();
    }

    public void StopListening()
    {
        _Active = false;
        _Server.Stop();
    }

    private async Task AcceptConnections()
    {
        while (_Active)
        {
            var client = await _Server.AcceptTcpClientAsync();
            DoStuffWithClient(client);
        }
    }

    private void DoStuffWithClient(TcpClient client)
    {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

主要:

    static void Main(string[] args)
    {
        var server = new Server();
        server.StartListening();

        Thread.Sleep(5000);

        server.StopListening(); …
Run Code Online (Sandbox Code Playgroud)

c# sockets c#-5.0 .net-4.5

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

使用类型编号在Haskell中生成给定arity的函数

假设我已经编码了Haskell类型中的自然数,并且我有一种方法可以添加和减去它们:

data Zero
data Succ n
-- ...
Run Code Online (Sandbox Code Playgroud)

我已经看到其产生的可变参数的功能,如外观的码的各个位,这个,这允许以下内容:

buildList "polyvariadic" "function" "wut?" :: [String]
-- ["polyvariadic","function","wut?"]
Run Code Online (Sandbox Code Playgroud)

我想知道的是,我是否可以构建一个只接受与类型号实例对应的参数数量的函数.我想做的事情看起来像:

one = Succ Zero
two = Succ one
three = Succ two

threeStrings :: String -> String -> String -> [String]
threeStrings = buildList three

threeStrings "asdf" "asdf" "asdf"
-- => ["asdf","asdf","asdf"]

threeStrings "asdf"
-- type checker is all HOLY CHRIST TYPE ERROR

threeStrings "asdf" "asdf" "asdf" "asdf"
-- type checker is all SWEET JESUS WHAT YOU ARE DOING
Run Code Online (Sandbox Code Playgroud)

我知道这是非常愚蠢的,这可能是浪费我的时间,但它看起来像周末会很有趣.

haskell types variadic-functions type-level-computation

14
推荐指数
2
解决办法
862
查看次数

如果语句似乎正在评估,即使条件评估为false

昨晚工作到很晚,我们试图找出原因失败的原因.验证检查在不应该的时候失败了.

我们最终在这段代码中添加了一个print语句(从Reflector中反汇编,以便检查代码实际上是我们编写的代码):

public static string Redacted(string name, DateTime lastModified)
{
    long ticks = lastModified.Ticks;
    if ((ticks != (ticks - (ticks % 10000L))) &&
            (lastModified != DateTime.MaxValue))
    {
        Log.Debug(string.Format("Last Modified Date = '{0}'. Ticks = '{1}'. TicksCalc = '{2}'",
            lastModified.ToString("dd/MM/yyyy hh:mm:ss.fff"),
            ticks, ticks - (ticks % 10000L)));
Run Code Online (Sandbox Code Playgroud)

它打印(重新格式化):

Last Modified Date = '22/03/2011 12:16:22.000'.
Ticks     = '634363497820000000'.
TicksCalc = '634363497820000000'            
Run Code Online (Sandbox Code Playgroud)

但条件是" ticks"(等于上面打印的Ticks)不等于" (ticks - (ticks % 10000))"(等于TicksCalc)!634363497820000000!= 634363497820000000?!

为了确定这里发生了什么,我们又添加了两个语句:

long ticks = lastModified.Ticks;
/* Added following two lines: */ …
Run Code Online (Sandbox Code Playgroud)

.net c# x86 assembly .net-assembly

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

什么是全局接受的正则表达式来匹配电子邮件地址

我见过很多例子,有很多'不,你错过了什么'评论.匹配电子邮件地址的正确方法是什么?

出于Sanity的缘故,只有完全限定的域名,不允许使用@localhost.(或两种方式)

必须允许子域名(issac@deptartment.company.museum)

regex language-agnostic email-validation

10
推荐指数
3
解决办法
7898
查看次数

在Hibernate中防止SQL注入

我已经使用hibernate与我的数据库交互,现在我想使我的数据库层对SQL注入安全,所以我做了一些研究,我发现我的查询应该参数化,所以这是否意味着我只是构建我的HQL查询如:

List mothers = session.createQuery(
"select mother from Cat as cat join cat.mother as mother where cat.name = ?")
.setString(0, name)
.list();
Run Code Online (Sandbox Code Playgroud)

然后它被参数化并受到SQL注入的保护,或者还有其他我需要做的事情......

另外一件事是提到 - " 总是逃避你的数据 "怎么能实现?

hibernate sql-injection hql parameterized

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

为什么Android布局文件名如此有限?

在文件名中保持一致性是很好的.

MyActivity.java包含公共类MyActivity

我希望将xml文件及其布局称为res/layout/MyActivity.xml

但是我收到一条错误消息"无效的文件名:必须只包含[a-z0-9_.]"

所以有两个问题:

  1. 为什么字符集如此有限(甚至不是大写?来吧!) - 啊 - 这个限制可能已经存在,所以你永远不会被那些不区分大小写的文件系统搞砸,比如Apple的HFS + (虽然请参阅维基百科的血腥故事http://en.wikipedia.org/wiki/Comparison_of_file_systems#cite_note-note-35-77)

  2. 哪些文件名受限制 - 所有res?只是res/layout?res/layout加上其他一些文件夹?

任何人都可以确认1,详细说明2吗?

谢谢,

彼得

android file names

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

Tomcat 7.0.35为静态HTML文件设置HTTP响应标头Content-Type字符集

我使用HTTP连接器从一个独立的Tomcat 7.0.35服务器的单个war文件中提供一些静态HTML文件和一个servlet.

我想通过设置HTTP响应头来指定所有静态HTML文件的字符集Content-Type=text/html;charset=UTF-8.

Tomcat默认提供HTML文件Content-Type=text/html(没有字符集部分).

我按照以下说明操作:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8

但标题仍然包含Content-Type=text/html没有;charset=UTF-8

我的web.xml在下面转载.请注意,我试图改变url-pattern/*,*,/index.html,和index.html,但这些工作的.

仅供参考,Tomcat正确地提供了/index.html文件(缺少除外;charset=UTF-8).将/ servlet的的getData也工作正常,我已经成功地建立了servlet的响应Content-Type=text/html;charset=UTF-8使用response.setContentType("application/json;charset=UTF-8");.

谢谢你的帮助.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <filter>
        <filter-name>CharacterEncoding</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>/index.html</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>DataServlet</servlet-name>
        <servlet-class>com.rcg.data.web.DataServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DataServlet</servlet-name>
        <url-pattern>/getData</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>
Run Code Online (Sandbox Code Playgroud)

tomcat content-type war static-html servlet-filters

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

在F#中实现Indexer

我试图将此C#代码转换为F#:

double[,] matrix;

public Matrix(int rows, int cols)
    {
        this.matrix = new double[rows, cols];
    }

 public double this[int row, int col]
    {
        get
        {
            return this.matrix[row, col];
        }
        set
        {
            this.matrix[row, col] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

基本上我最大的问题是在F#中创建索引器.网络上的任何地方我找不到任何可以应用的东西.我包括了该类的其他几个部分,以防将索引器合并到Matrix类型中并不明显.所以一个好的答案将包括如何从这里的三个部分中制作一个完整的类型,以及可能需要的任何其他东西.另外,我知道F#powerpack中的矩阵类型,但是我试图通过将我理解的C#项目转换为F#来学习F#.

提前致谢,

短发

f# indexer matrix

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