小编bma*_*ies的帖子

sizeof(int)在托管实现上是否可以为1?

我的观点是,如果由于需要能够保存或(-1)的任何可能值,C实现不能满足某些stdio函数(特别是fputc/ fgetc)的规范.这个推理是否正确?sizeof(int)==1intunsigned charEOF

(显然sizeof(int)不能为1,如果CHAR_BIT是8,由于所需的最小范围int,所以我们隐含地仅讨论与CHAR_BIT>=16例如DSP的实现,其中典型的实现将是独立实现而不是托管实现,因此不需要提供stdio.)

编辑:在阅读了答案和一些链接引用后,对托管实现可能有效的方式有一些想法sizeof(int)==1:

首先,一些引用:

7.19.7.1(2-3):

如果未设置stream指向的输入流的结束指示符并且存在下一个字符,则fgetc函数将该字符作为转换为int的unsigned char获取并为该流提前关联的文件位置指示符(如果定义).

如果设置了流的结束指示符,或者流处于文件结尾,则设置流的结束指示符并且fgetc函数返回EOF.否则,fgetc函数返回stream指向的输入流中的下一个字符.如果发生读取错误,则设置流的错误指示符,并且fgetc函数返回EOF.

7.19.8.1(2):

fread函数在ptr指向的数组中,从stream指向的流中读取大小由size指定的nmemb元素.对于每个对象,对fgetc函数进行大小调用,并按顺序读取存储在unsigned char数组中的结果,该数组恰好覆盖对象.流的文件位置指示符(如果已定义)按成功读取的字符数提前.

思考:

  • 读回unsigned char范围之外的值int可能只是在实现中具有未定义的实现定义的行为.这是特别令人不安,因为它意味着使用fwritefread存储二进制结构(这同时导致不可移植的文件,应该是你可以在任何单个实现便携执行操作)可能出现的工作只是默默地失败.基本上总是导致未定义的行为.我接受的实现可能没有一个可用的文件系统,但它的很多难以接受的实现可以有一个文件系统,当你试图用它那就会自动调用鼻鬼,没有办法判断它的不可用. 现在,我意识到行为是实现定义的,而不是不确定的,它不是这么不安,我想这可能是一个有效的(虽然不受欢迎)的实现.

  • 实现sizeof(int)==1可以简单地将文件系统定义为空且只读.然后,就没有办法应用程序可以读取本身写的,只从一个输入设备的任何数据stdin可能被实现为只给予积极的char配合在价值观int.

编辑(再次):从C99理由,7.4:

EOF传统上是-1,但可以是任何负整数,因此可以与任何有效的字符代码区分开.

这似乎表明sizeof(int)可能不是1,或者至少这是委员会的意图.

c

41
推荐指数
3
解决办法
2573
查看次数

什么"做检查"呢?

我想知道在configure,make,make check和make install的安装过程中,"make check"做了什么?谢谢!

makefile

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

NSInteger的最大值是多少?

我需要将NSInteger的最大值存储到NSInteger中吗?这样做的正确语法是什么?

谢谢.

cocoa nsinteger

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

当JDBC中没有任何显式时,h2的默认用户名和密码是什么?

从程序中,我创建了一个H2数据库,而没有在JDBC URL中指定任何用户或密码.

现在我正在尝试使用脚本工具访问该数据库.该文档说-user sa在默认情况下使用.这不起作用,如果我添加-password sa或删除它仍然不起作用-user.我错过了什么?

/opt/h2/bin java -cp h2-1.3.161.jar org.h2.tools.Script -url jdbc:h2:/data/jug/jas-coref.h2 -user sa -password sa -script /data/jug/ris-start.sql
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Wrong user name or password [28000-161]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.engine.Engine.validateUserAndPassword(Engine.java:301)
at org.h2.engine.Engine.createSessionAndValidate(Engine.java:146)
at org.h2.engine.Engine.createSession(Engine.java:121)
at org.h2.engine.Engine.createSession(Engine.java:28)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:285)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:110)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
at org.h2.Driver.connect(Driver.java:72)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at org.h2.tools.Script.execute(Script.java:152)
at org.h2.tools.Script.execute(Script.java:133)
at org.h2.tools.Script.runTool(Script.java:101)
at org.h2.tools.Script.main(Script.java:51)
Run Code Online (Sandbox Code Playgroud)

h2

33
推荐指数
3
解决办法
5万
查看次数

api安全实现php

我有一个网站,允许用户检查他们的统计数据(上传的文件数量,他们有多少文件,配额,访问类型等...)

我在我的网站上创建了一个部分:api.domain.com

这可以通过curl或Web浏览器访问,因为我返回一个json对象或xml(取决于用户prefs)

我的问题是:我应该使用user/pass限制访问,还是应该创建用户文件的哈希值?

例如:

方案1:

用户创建一个php curl,发送用户并通过post或curl auth传递并获取结果,解析它等...

对我来说,这是安全的,但如果他们改变了通行证,用户必须保持他的脚本

方案2

用户访问如下文件:api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ然后访问数据

这个,没什么好维护的

php security api

32
推荐指数
2
解决办法
762
查看次数

您最喜欢的算法和它教给您的课程

什么算法教你最多的编程或特定的语言功能?

我们所有人都知道,我们已经知道,我们已经学会了一个重要的未来课程,这是基于最终理解程序员编写的算法,在演化阶梯上的几个步骤.谁的想法和代码对你有神奇的触动?

language-agnostic algorithm

27
推荐指数
8
解决办法
7500
查看次数

实现懒惰的函数式语言

在实现惰性函数语言时,有必要将值存储为未评估的thunks,仅在需要时进行评估.

在Spineless Tagless G-machine中所讨论的,有效实现的挑战之一是,对于每个thunk,该评估必须仅执行一次,并且随后的访问必须重用计算的值 - 如果不这样做将导致至少二次减速(也许是指数?我不确定是否在我头顶.)

我正在寻找一个简单的示例实现,其操作很容易理解(与GHC的工业级实现相反,GHC专为简化性能而设计).我在http://www.andrej.com/plzoo/遇到了minihaskell,其中包含以下代码.

由于它被称为"一个有效的解释器",我认为它确实只执行了一次每次评估并保存计算值以便重复使用,但我很难看到何处和如何; 我只能在解释器本身看到一个赋值语句,并且看起来它不会覆盖thunk记录的一部分.

所以我的问题是,这个解释器确实在做这样的缓存,如果是这样,在哪里以及如何?(如果没有,那么最简单的现存实现是什么呢?)

代码来自http://www.andrej.com/plzoo/html/minihaskell.html

let rec interp env = function
  | Var x ->
     (try
     let r = List.assoc x env in
       match !r with
           VClosure (env', e) -> let v = interp env' e in r := v ; v
         | v -> v
       with
       Not_found -> runtime_error ("Unknown variable " ^ x))
   ... snipping the easy stuff ...
  | Fun _ as e -> VClosure (env, …
Run Code Online (Sandbox Code Playgroud)

haskell

25
推荐指数
2
解决办法
2292
查看次数

你能继承Maven中父POM的版本吗?

我有一堆项目,如:

project1
project2
project3
........
project111
Run Code Online (Sandbox Code Playgroud)

每个项目都在jar中编译:project-1.1.1.1.jar,....是否可以在父文件夹中添加pom.xml,以便为所有项目定义版本1时间?

java project maven

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

"例行"的技术定义是什么?

我正在研究lisp语言(做lisp例程)并且在一般情况下我知道什么是例程,但在技术背景下我可以谈论它,因为我现在开始学习例程.那么,常规的真正定义是什么?(我已经"搜索"了这个,但没有找到任何东西)

definition routines

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

valgrind不接受最新版本的glibc

Valgrind不喜欢glibc 2.15:

checking the GLIBC_VERSION version... unsupported version 2.15
configure: error: Valgrind requires glibc version 2.2 - 2.14
Run Code Online (Sandbox Code Playgroud)

我怎么处理这个?我是否必须降级glibc?我正在研究Ubuntu 12.04,如果这是相关的信息.

更新:

所以我试图从那里下载源代码并安装,而不是使用apt-get,因为我正在通过Learn C the Hard Way.在我遇到这个问题后,我使用apt-get来查看它是否可行.它为我安装了这个包:

libc6-dbg - Embedded GNU C Library: detached debugging symbols
Run Code Online (Sandbox Code Playgroud)

valgrind

22
推荐指数
3
解决办法
7974
查看次数