小编jwf*_*arn的帖子

C API函数的样式

我正在开发一个支持多种编程环境的库,如VB6和FoxPro.我必须坚持C约定,因为它是最低的共同点.现在我对这个风格有疑问.

假设函数进程输入并返回一个字符串.在此过程中,可能会发生错误.目前提出的风格是这样的:

int func(input params... char* buffer, unsigned int* buffer_size);
Run Code Online (Sandbox Code Playgroud)

这种风格的好处是原型中包含了所有内容,包括错误代码.并且可以避免内存分配.问题是该功能非常冗长.并且因为buffer_size可以是any,所以需要更多的代码来实现.

另一种选择是返回char*,并返回NULL以指示错误:

char* func(input params...);
Run Code Online (Sandbox Code Playgroud)

此样式需要调用者删除缓冲区.内存分配是必需的,因此服务器程序可能会遇到内存碎片问题.

第二个选项的变体是使用线程局部变量来保存返回的指针char*,这样用户就不需要删除缓冲区.

你喜欢哪种风格?还有原因吗?

c c++ api

8
推荐指数
3
解决办法
1305
查看次数

模板基类typedef和函数的更好的C++语法?

我有使用VC9(Microsoft Visual C++ 2008 SP1)编译的代码,但没有使用GCC 4.2(在Mac上,如果这很重要).如果我填写足够的限定符和关键字,我可以强制它在GCC中工作,但这似乎不对.

这是一个展示我的问题的最小代码示例:

template< typename N >
struct B {
    typedef N n_type;                     // can derived class access typedef?
    void foo() {}                         // can derived class access function?
};

template< typename N >
struct D : public B<N> {

    typedef B<N> b_type;
    typedef typename b_type::n_type bn_type;

    void f1( n_type ) {}                  // ERROR: 'n_type' has not been
                                          // declared

    void f2( typename B<N>::n_type ) {}   // OK, verbose

    void f3( b_type::n_type ) {}          // ERROR: 'struct …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates

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

如何使用Google Closure编译器删除未使用的JavaScript代码?

如何使用Google Closure编译器删除未使用的代码?

我正在使用JQuery Slider控件但是我没有在JQuery中使用任何其他东西.所以我读到高级模式下的Google Closure编译器可以删除未使用的代码,但我不知道如何.

我有frontpage.html链接到我的网站上托管的html页面的外部JQuery,JQuery UI和JQuery Slider控件.

在我的frontpage.html上,我还在HTML中嵌入了JavaScript,启动了JQuery Slider控件.

我如何使用我使用在线Closure Compiler来评估我的frontpage.html,JQuery,JQuery UI和JQuery Slider来删除我不使用的所有未使用的JQuery代码?

javascript jquery jquery-ui google-closure google-closure-compiler

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

如何在MSYS/Git Bash中看到颜色Ant输出?

我想使用AnsiColorLoggerAnt获取颜色输出.我在Windows上使用Git Bash.

我试过了:

$ ant -logger org.apache.tools.ant.listener.AnsiColorLogger
Run Code Online (Sandbox Code Playgroud)

但我的输出看起来像:

Buildfile: c:\foo\build.xml
?[2;36m    [junit] Testsuite: org.foo.BarTest?[m
?[2;36m    [junit] Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.188 sec?[m
?[2;36m    [junit] ?[m
?[2;36m    [junit] Testcase: testInherits took 0.175 sec?[m
?[2;36m    [junit]      FAILED?[m
?[2;36m    [junit] subdir not child?[m
?[2;36m    [junit] junit.framework.AssertionFailedError: subdir not child?[m
?[2;36m    [junit]      at org.foo.BarTest.testInherits(BarTest.java:61)?[m
?[2;36m    [junit] ?[m
?[2;31m    [junit] Test org.foo.BarTest FAILED?[m
Run Code Online (Sandbox Code Playgroud)

我知道ANSI颜色至少部分地在Git Bash中起作用,因为命令会ls -ACF --color=auto产生很好的彩色输出.

Ant的诀窍是什么?

ant msys git-bash

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

将闭包编译器的类型安全性与AMD(requirejs)一起使用的最坚固的方法是什么?

虽然JavaScript及其许多库(jQuery,RequireJS)允许创建许多优秀的网站,但我在考虑构建更大的网站时发现它缺乏类型安全性.

谷歌有一个很棒的闭包编译器,它允许你用JSDoc 注释你的JavaScript并进行类型检查.在尝试了它的丰富类型系统之后,我希望这会大大提高更长寿的JavaScript项目的可维护性.

唯一的问题是它与RequireJS等AMD库不能很好地协同工作.有一个实验性的--transform_amd_modules标志,用于连接JavaScript文件并通过消除它来处理范围.然而,这似乎是一种反模式,消除了RequireJS的大部分好处(但保留了模块化文件结构).还有一个问题是未来将获得多少支持

最终目标是类型安全,而不是昂贵的RequireJS的好处,这将是我最好的赌注?

PS:虽然我使用RequireJS作为AMD库的首选,但我不会反对使用不同AMD库的解决方案.

javascript type-safety google-closure-compiler requirejs

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

'Delimiter'和'InheritsFromParent'属性在.vsprops文件中的含义是什么?

我似乎无法找到任何有用的微软大约将如何使用的文档DelimiterInheritsFromParent属性的UserMacro定义用户宏当元素.vsprops属性表文件为Visual Studio.

以下是示例用法:

<UserMacro Name="INCLUDEPATH" Value="$(VCROOT)\Inc"
    InheritsFromParent="TRUE" Delimiter=";"/>
Run Code Online (Sandbox Code Playgroud)

从上面的例子中,我猜测"inherit"实际上意味着"a)如果定义是非空的,那么追加分隔符,b)附加新定义"其中非继承行为将简单地替换任何当前宏定义.有人有确切消息么?更好的是,有没有人有Visual Studio .vsprops文件和宏的替代文档的任何建议来源?

注意:这是一样的InheritedPropertySheets所述的属性VisualStudioPropertySheet元件,例如:

<VisualStudioPropertySheet ... InheritedPropertySheets=".\my.vsprops">
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"继承"基本上意味着"包括".

visual-studio-2005 visual-studio-2008 visual-studio

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

如何从Python编写Visual Studio 2008脚本?

我想编写驱动Visual Studio 2008和Visual C++ 2008的Python脚本win32com.client.Dispatch.到目前为止我发现的所有示例都使用.这适用于Excel 2007和Word 2007但Visual Studio 2008失败:

import win32com.client
app1 = win32com.client.Dispatch( 'Excel.Application' ) # ok
app2 = win32com.client.Dispatch( 'Word.Application' )  # ok
app3 = win32com.client.Dispatch( 'MSDev.Application' ) # error
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?Visual Studio 2008是否使用不同的字符串来标识自己?以上方法是否过时了?

python visual-studio-2008 visual-studio visual-c++

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

重新整合Elixir 1.2或更高版本中的协议

我有一个宏,它创建一个模块,一个模块的结构,并实现该结构的协议.

在我的套件中,我有一个简单的测试模块,它调用宏,然后在生成的模块/结构/协议实现上进行断言.一个测试使用struct调用协议函数来断言它已经实现.在1.2之前,这有效,但现在它失败了,运行套件时我收到以下警告.

test/dogma/rule_builder_test.exs:7: warning: the Dogma.Rule \
protocol has already been consolidated, an implementation for \
Dogma.RuleBuilderTest.MagicTestRule has no effect
Run Code Online (Sandbox Code Playgroud)

我现在已经删除了这个测试,因为我相信我的套件的其余部分已经充分测试了这个功能,但是我很好奇是否有办法让这个功能再次运行,或者至少让警告静音.

我玩过Process.consilodate/2,但没有成功.

metaprogramming elixir

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

如何使自定义提示在iex启动时生效?

我有一个自定义提示,但是当我启动时iex,会显示内置提示.点击后输入我的提示生效.如何在iex启动时让我的提示生效?

这就是我所看到的:

在此输入图像描述

这是我的.iex.exs档案:

IEx.configure(
  colors: [ enabled: true],
  default_prompt: [
      "\e[G",   # move to column 1
      "\e[35m", # magenta
      "MY %prefix(%counter)",
      ">",
      "\e[0m"   # reset
    ] |> IO.chardata_to_string
)
Run Code Online (Sandbox Code Playgroud)

elixir iex

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

GUI在VS 2010项目中包含.prop文件?

Visual Studio 2010不再使用.vsprops文件而是使用.props文件.

.vsprops在Visual Studio 2008项目中包含文件,可以在" 解决方案资源管理器"面板中右键单击项目图标,选择" 属性",然后转到" 配置属性"|"属性".常规部分,并修改Inherited Project Property Sheets属性以包含.vsprops路径列表.也可以直接修改Visual Studio 2008项目文件.

Visual Studio 2010 GUI中是否有一种方法.props可以在项目中包含文件?在继承的项目属性表属性似乎已被删除.如果手动编辑项目文件是包含.props文件的唯一方法,那么可以在哪里找到有关文件的文档?

我不是在谈论添加.props文件到项目中的文件列表,我的意思是我怎么告诉该项目使用一个.props文件.

visual-studio-2010 visual-studio-2008 visual-studio

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