[swift-users] Passing variadic C args through?

Rick Mann rmann at latencyzero.com
Tue Nov 14 20:00:36 CST 2017


I tried to find an alternative init() to use, but couldn't (despite dozens of releases, Xcode's code completion still fails much of the time). Thanks for pointing me to the right one!

Should I file a bug?

> On Nov 14, 2017, at 17:47 , Jordan Rose <jordan_rose at apple.com> wrote:
> 
> Heh, it would be nice to catch this. You're collecting a bunch of arguments in an Array, and then passing that array straight on as a single argument itself, which means it gets passed as either an NSArray or a pointer (not sure which). Use 'init(format:arguments:)' instead.
> 
> Jordan
> 
> 
>> On Nov 14, 2017, at 17:19, Rick Mann via swift-users <swift-users at swift.org> wrote:
>> 
>> I've had a long-working `debugLog()` method that looks like this:
>> 
>> ```
>> func
>> debugLog<T>(_ inMsg: T, file inFile : String = #file, line inLine : Int = #line)
>> {
>> 	let file = (inFile as NSString).lastPathComponent
>> 	let s = "\(file):\(inLine)    \(inMsg)"
>> 	print(s)
>> }
>> ```
>> 
>> I wanted to add a version that works like `String(format:)`:
>> 
>> ```
>> func
>> debugLog(format inFormat: String, file inFile : String = #file, line inLine : Int = #line, _ inArgs: CVarArg...)
>> {
>> 	let s = String(format: inFormat, inArgs)
>> 	debugLog(s, file: inFile, line: inLine)
>> }
>> 
>> ```
>> 
>> While this compiles and executes, all of the values are zero for this example:
>> 
>> ```
>> let xc = CGFloat(1.0)
>> let yc = CGFloat(0.0)
>> let len = CGFloat(282.1364917907643)
>> 
>> debugLog(format: "Pixel %f, %f length too far %f", xc, yc, len)
>> ```
>> 
>> Output:
>> 
>> ```
>> FisheyeImageRenderer.swift:108    Pixel 0.000000, 0.000000 length too far 0.000000
>> ```
>> 
>> Something is being misinterpreted in the passing of `inArgs: CVarArg...`
>> 
>> TIA,
>> 
>> -- 
>> Rick Mann
>> rmann at latencyzero.com
>> 
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 


-- 
Rick Mann
rmann at latencyzero.com




More information about the swift-users mailing list