You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Since the addition of if in const context, the usage of if + cfg! macro became a thing, since it reduces the need of replication of docs and definition.
Currently, cbindgen ignores this kind of construction, but ideally, supporting that would make easier for maintaining C-exported constants that differ on targets.
In const context, an if must always have an else, so it is also common to have panicking macros, like panic!, unimplemented!, todo! and unreacheble! in the else clause. That causes an compiler error with the panic message if it reaches the panic. I think this could generate an #error directive with the message.
Example
pubconstMYCONST:i32 = ifcfg!(target_os = "linux"){10}elseifcfg!(windows){5}else{panic!("We only support linux and windows for now!")}
#if defined(⟨USER_DEFINED_LINUX_FLAG_HERE⟩)
#defineMYCONST 10
#elsif defined(⟨USER_DEFINED_WINDOWS_FLAG_HERE⟩)
#defineMYCONST 5
#else#error "We only support linux and windows for now!"
#endif
The text was updated successfully, but these errors were encountered:
Since the addition of
if
in const context, the usage ofif
+cfg!
macro became a thing, since it reduces the need of replication of docs and definition.Currently, cbindgen ignores this kind of construction, but ideally, supporting that would make easier for maintaining C-exported constants that differ on targets.
Possible expected result:
In const context, an
if
must always have anelse
, so it is also common to have panicking macros, likepanic!
,unimplemented!
,todo!
andunreacheble!
in theelse
clause. That causes an compiler error with the panic message if it reaches the panic. I think this could generate an#error
directive with the message.Example
The text was updated successfully, but these errors were encountered: