我在编写使用为C文件设计的头文件的C++代码时遇到问题.特别是,头文件使用了一个名为class的变量名:
int BPY_class_validate(const char *class_type, PyObject *class, PyObject *base_class, BPY_class_attr_check* class_attrs, PyObject **py_class_attrs);
Run Code Online (Sandbox Code Playgroud)
这适用于C,因为类不作为关键字,但在C++中,类是.那么无论如何我可以将这个头文件#include到c ++文件中,或者我运气不好?
谢谢.
我已经把头发拉了一段时间了.以下方法应该下载文件,并将其保存到硬盘驱动器上指定的位置.
private static void saveImage(Context context, boolean backgroundUpdate, URL url, File file) {
if (!Tools.checkNetworkState(context, backgroundUpdate))
return;
// Get the image
try {
// Make the file
file.getParentFile().mkdirs();
// Set up the connection
URLConnection uCon = url.openConnection();
InputStream is = uCon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
// Download the data
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
// Write the bits to the file
OutputStream os = new …Run Code Online (Sandbox Code Playgroud) 根据文档eval和eval-syntax行为相同,异常eval 丰富了输入语法.
如果top-level-form是一个语法对象,其基准不是编译形式,那么它的词汇信息在被发送到评估处理程序之前会被丰富:
与eval类似,除了stx必须是语法对象,并且它的词汇上下文在传递给求值处理程序之前不会被丰富.
我很难理解这意味着什么.我得到的印象是以某种方式涉及命名空间,但我无法想出一个示例程序,其中eval和eval-syntax的行为不同.(当给出语法对象时.)
那么怎么做eval和eval-syntax有所不同,或者至少你能给我一个样本程序,让他们表现出不同的行为?
我正在看android ndk opengl es的例子.无论如何,它有在那里的线:
int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
Run Code Online (Sandbox Code Playgroud)
其中EGL_CONTEXT_CLIENT_VERSION定义为:
private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
Run Code Online (Sandbox Code Playgroud)
我一直在讨论该调用的API,它说最后一个参数是属性列表.但我似乎无法找到任何实际上提供你可能想要放在那里的属性的东西,或者甚至解释这个例子放在那里的两个属性.谁能告诉我这些属性是什么意思?(或者更好的是,还请指出一些解释它的文档).
谢谢
编辑:我刚刚意识到一些上下文会有所帮助.特定样本位于samples/hello-gl2中.该文件位于视图类中,特别是ContextFactory静态类.
我正在尝试从http://developer.nvidia.com/tegra-resources,在android ndk示例,libs文件夹中编译nvfile库.无论如何,因为我并不真的需要整套库,所以我拿出了我需要的库,看起来它的依赖性.这是用于编译它们的Android.mk文件.
include $(CLEAR_VARS)
LOCAL_MODULE := nvthread
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map
LOCAL_SRC_FILES := nv/nv_thread/nv_thread.c
LOCAL_C_INCLUDES := nv
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := nvfile
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map
LOCAL_SRC_FILES := nv/nv_file/nv_file.c
LOCAL_C_INCLUDES := nv
LOCAL_STATIC_LIBRARIES := nvthread nvapkfile
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := nvapkfile
LOCAL_CFLAGS := -Wall -g
LOCAL_LDFLAGS := -Wl,-Map,xxx.map
LOCAL_SRC_FILES := nv/nv_apk_file/nv_apk_file.c
LOCAL_C_INCLUDES := nv
LOCAL_STATIC_LIBRARIES := nvthread
include $(BUILD_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
nvapkfile库似乎能够很好地与nvthread链接,但是nvfile库似乎根本不想链接到nvapkfile库.源代码中的include文件工作正常,只是每当我尝试编译它时,我得到一个未定义的引用.以下是输出示例:
/home/leif/MarbleMachine/android/obj/local/armeabi/libnvfile.a(nv_file.o): In function `NvFInit':
/home/leif/MarbleMachine/android/jni/nv/nv_file/nv_file.c:49: undefined reference to …Run Code Online (Sandbox Code Playgroud) 我一直在使用以下代码来创建各种结构,但只给C文件外的人一个指向它的指针.(是的,我知道他们可能会搞乱它,所以它不完全像Java中的私有关键字,但对我来说没关系).
无论如何,我一直在使用以下代码,今天我看了它,我真的很惊讶它实际上正在工作,任何人都可以解释为什么这是?
在我的C文件中,我创建了我的结构,但是不要在typedef命名空间中给它一个标记:
struct LABall {
int x;
int y;
int radius;
Vector velocity;
};
Run Code Online (Sandbox Code Playgroud)
在H文件中,我把它放在:
typedef struct LABall* LABall;
Run Code Online (Sandbox Code Playgroud)
我显然在c文件中使用#include"LABall.h",但我没有在头文件中使用#include"LABall.c",因为这会破坏单独头文件的整个目的.那么,为什么我还没有实际包含H文件中的LABall*结构的指针呢?是否与跨文件的struct命名空间有关,即使一个文件没有链接到另一个文件?
谢谢.
通常我可以通过更改值来改变Python中的stdout sys.stdout.但是,这似乎只会影响print陈述.那么,有什么方法可以抑制通过os.system()Python中的命令运行的程序的输出(到控制台)?
我正在构建一组rackunit测试,其中实际test-case和check-equal?功能是在宏中定义的.代码看起来像这样:
#lang racket
(require rackunit
rackunit/text-ui)
(define-syntax (my-test=? stx)
(syntax-case stx ()
[(_ case1 case2)
(syntax/loc stx
(test-case "tests"
(check-equal? case1 case2)))]))
(define tests
(test-suite "tests"
(my-test=? 'a 'b)))
(run-tests tests)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我得到以下输出:
--------------------
tests > tests
tests
FAILURE
name: check-equal?
location: unsaved-editor:11:9
actual: 'a
expected: 'b
. Check failure
--------------------
0 success(es) 1 failure(s) 0 error(s) 1 test(s) run
Run Code Online (Sandbox Code Playgroud)
其中第11行是check-equal?宏内部函数的行:(check-equal? case1 case2)))]))
有没有什么方法可以使用rackunit来显示使用的行上的错误my-test=?:(my-test=? 'a 'b)))?
假设我有一些文件a.rkt:
#lang racket
(define a 12)
Run Code Online (Sandbox Code Playgroud)
我现在想要编写一些测试用例,使用b.rkt需要的文件a.rkt:
#lang racket
(require "a.rkt")
a
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以b.rkt识别定义的标识符a.rkt而不必provide从第一个文件中获取?(理想情况下,根本不需要更改第一个文件.)
我在require/provide的文档中没有立即看到任何内容.
在编写使用的宏时syntax/parse,我创建了一个拼接语法类,用于捕获可能提供给宏的选项.这些选项都是可选的,它们可以按任何顺序提供.使用~optional省略号头部图案使这很容易:
(define-splicing-syntax-class opts
(pattern (~seq (~or (~optional (~seq #:a a))
(~optional (~seq #:b b))
(~optional (~seq #:x x))
(~optional (~seq #:y y)))
...))
Run Code Online (Sandbox Code Playgroud)
然而,有一个问题:我希望能够到组这些选项分为两组:含组a和b,和包含组x和y.但是,用户仍可以按任何顺序指定选项,因此对于此示例输入:
(foobar #:b 3 #:y 7 #:a 2)
Run Code Online (Sandbox Code Playgroud)
我希望能够生成以下属性:
first-opts: (#:a 2 #:b 3)
second-opts: (#:y 7)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经设法使用手动执行此操作#:with,但它并不漂亮:
(define-splicing-syntax-class opts
#:attributes ([first-opts 1] [second-opts 1])
(pattern (~seq (~or (~optional (~seq #:a a))
(~optional (~seq #:b b))
(~optional (~seq #:x x))
(~optional …Run Code Online (Sandbox Code Playgroud)