Last active
May 4, 2022 12:36
-
-
Save jmark/b6c771479ca5c8c43ac0dd2b7abc7d7e to your computer and use it in GitHub Desktop.
Minimal example to reproduce error for parsing 'arr[]' in function typedefs in CBinding.jl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# include <stdio.h> | |
# include <example.h> | |
void example_print_array(int n, int *a) { | |
for (int i = 0; i < n; ++i) { | |
printf("a[%d] = %d\n", i, a[i]); | |
} | |
} | |
void example_run_callback(example_callback_t callback) { | |
const int n = 4; | |
int a[n]; | |
a[0] = 11; | |
a[1] = 22; | |
a[2] = 33; | |
a[3] = 44; | |
callback(n,a); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ifndef EXAMPLE_H | |
# define EXAMPLE_H | |
/* This gives error in CBinding.jl: */ | |
typedef void (*example_callback_t)(int n, int a[]); | |
/* This works with CBinding.jl: */ | |
/* | |
typedef void (*example_callback_t)(int n, int *a); | |
*/ | |
/* This works with CBinding.jl: */ | |
void example_print_array(int n, int a[]); | |
void example_run_callback(example_callback_t callback); | |
# endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using CBinding; | |
c` | |
-Wall | |
-Werror | |
-I. | |
-L. -lexample` | |
c""" | |
# include <example.h> | |
""" | |
a = Vector{Int32}([11,22,33,44]) | |
n = length(a) | |
println("# example_print_array #"); | |
c"example_print_array"(n,a) | |
function callback(n,a) | |
for i = 1:n | |
println("a[$i] = ", a[i]) | |
end | |
end | |
println("# example_run_callback #"); | |
c"example_run_callback"(callback) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# include <stdio.h> | |
# include <example.h> | |
void callback(int n, int a[]) { | |
for (int i = 0; i < n; ++i) { | |
printf("a[%d] = %d\n",i,a[i]); | |
} | |
} | |
int main(int argc, char **argv) { | |
const int n = 4; | |
int a[n]; | |
a[0] = 11; | |
a[1] = 22; | |
a[2] = 33; | |
a[3] = 44; | |
printf("# example_print_array #\n"); | |
example_print_array(n,a); | |
printf("# example_run_callback #\n"); | |
example_run_callback(callback); | |
return 0; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CC = gcc | |
CCFLAGS = -I. | |
LDFLAGS = -L. | |
all: main libexample.so | |
main: main.c example.o | |
$(CC) -o $@ -Wall -Werror $(CCFLAGS) $^ | |
example.o: example.c | |
$(CC) -c -Wall -Werror -fPIC $(CCFLAGS) $< | |
libexample.so: example.o | |
$(CC) -shared $(CCFLAGS) -o $@ $< |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This file is machine-generated - editing it directly is not advised | |
julia_version = "1.7.2" | |
manifest_format = "2.0" | |
[[deps.ArgTools]] | |
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" | |
[[deps.Artifacts]] | |
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" | |
[[deps.Base64]] | |
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" | |
[[deps.CBinding]] | |
deps = ["Clang_jll", "Libdl", "Markdown", "Scratch"] | |
git-tree-sha1 = "9b5b4bb2e6debc86998e1d3862ee60dd3b5b5965" | |
uuid = "d43a6710-96b8-4a2d-833c-c424785e5374" | |
version = "1.0.8" | |
[[deps.Clang_jll]] | |
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll", "libLLVM_jll"] | |
git-tree-sha1 = "8cf7e67e264dedc5d321ec87e78525e958aea057" | |
uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" | |
version = "12.0.1+3" | |
[[deps.Dates]] | |
deps = ["Printf"] | |
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" | |
[[deps.Downloads]] | |
deps = ["ArgTools", "LibCURL", "NetworkOptions"] | |
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" | |
[[deps.InteractiveUtils]] | |
deps = ["Markdown"] | |
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" | |
[[deps.JLLWrappers]] | |
deps = ["Preferences"] | |
git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" | |
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" | |
version = "1.4.1" | |
[[deps.LibCURL]] | |
deps = ["LibCURL_jll", "MozillaCACerts_jll"] | |
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" | |
[[deps.LibCURL_jll]] | |
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] | |
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" | |
[[deps.LibGit2]] | |
deps = ["Base64", "NetworkOptions", "Printf", "SHA"] | |
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" | |
[[deps.LibSSH2_jll]] | |
deps = ["Artifacts", "Libdl", "MbedTLS_jll"] | |
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" | |
[[deps.Libdl]] | |
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" | |
[[deps.Logging]] | |
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" | |
[[deps.Markdown]] | |
deps = ["Base64"] | |
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" | |
[[deps.MbedTLS_jll]] | |
deps = ["Artifacts", "Libdl"] | |
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" | |
[[deps.MozillaCACerts_jll]] | |
uuid = "14a3606d-f60d-562e-9121-12d972cd8159" | |
[[deps.NetworkOptions]] | |
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" | |
[[deps.Pkg]] | |
deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] | |
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" | |
[[deps.Preferences]] | |
deps = ["TOML"] | |
git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" | |
uuid = "21216c6a-2e73-6563-6e65-726566657250" | |
version = "1.3.0" | |
[[deps.Printf]] | |
deps = ["Unicode"] | |
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" | |
[[deps.REPL]] | |
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] | |
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" | |
[[deps.Random]] | |
deps = ["SHA", "Serialization"] | |
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" | |
[[deps.SHA]] | |
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" | |
[[deps.Scratch]] | |
deps = ["Dates"] | |
git-tree-sha1 = "0b4b7f1393cff97c33891da2a0bf69c6ed241fda" | |
uuid = "6c6a2e73-6563-6170-7368-637461726353" | |
version = "1.1.0" | |
[[deps.Serialization]] | |
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" | |
[[deps.Sockets]] | |
uuid = "6462fe0b-24de-5631-8697-dd941f90decc" | |
[[deps.TOML]] | |
deps = ["Dates"] | |
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" | |
[[deps.Tar]] | |
deps = ["ArgTools", "SHA"] | |
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" | |
[[deps.UUIDs]] | |
deps = ["Random", "SHA"] | |
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" | |
[[deps.Unicode]] | |
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" | |
[[deps.Zlib_jll]] | |
deps = ["Libdl"] | |
uuid = "83775a58-1f1d-513f-b197-d71354ab007a" | |
[[deps.libLLVM_jll]] | |
deps = ["Artifacts", "Libdl"] | |
uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" | |
[[deps.nghttp2_jll]] | |
deps = ["Artifacts", "Libdl"] | |
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" | |
[[deps.p7zip_jll]] | |
deps = ["Artifacts", "Libdl"] | |
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[deps] | |
CBinding = "d43a6710-96b8-4a2d-833c-c424785e5374" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment