[VS Code] [vscode-cpptools plugin] Intellisense - Dim Inactive Regions: Where does vscode-cpptools get the values for variables used in "#IF" e.g. "GTK_CHECK_VERSION"?

Christian Ohrfandl christian.ohrfandl at gmail.com
Mon Dec 13 18:52:43 UTC 2021


Hello Michael,

thank you for your quick reply. As you can see from the answer of my 
other mail, you exactly hit the spot with mentioning adding 
'--disable-gtk3' to 'autogen.input'.

Thank you really much for supporting me!


Kind regards,

Christian

On 13.12.21 07:38, Michael Weghorn wrote:
>
> On 11/12/2021 15.40, Christian Ohrfandl wrote:
>> I have the problem that vscode-cpptools "dim inactive regions" option 
>> dims the region in the statement
>> `#if GTK_CHECK_VERSION(4,0,0)`
>> and additionally Intellisense also does not work in that region.
>>
>> When changing the statement to
>> `#if GTK_CHECK_VERSION(3,0,0)`
>> the respective region is not dimmed anymore and also IntelliSense 
>> works again.
>>
>> However when running the application, the following code
>> `cout << gtk_get_major_version() << "." << gtk_get_minor_version() << 
>> "." << gtk_get_micro_version() << endl;`
>> returns `4.5.0`
>> Therefore, I know for a fact that at compile time level my 
>> application uses GTK 4.5.0.
>
> What specific source file are you editing?
>
> Are you building both the gtk3 and gtk4 VCL plugins? (gtk3 is enabled 
> by default. You can check e.g. whether you have a file 
> 'instdir/program/libvclplug_gtk3lo.so' after the build, in addition to 
> 'instdir/program/libvclplug_gtk4lo.so')
>
> Most of the files in 'vcl/unx/gtk3' are used for both, the gtk3 and 
> the gtk4 VCL plugin. (s. how the .cxx files in 'vcl/unx/gtk4/' include 
> the ones from the 'vcl/unx/gtk3 directory'; 
> 'vcl/Library_vclplug_gtk3.mk' and 'vcl/Library_vclplug_gtk4.mk' are 
> the corresponding Makefiles where you can see the compiler flags used).
>
>> So where does the vscode-cpptools know the GTK version from and 
>> therefore is able to judge `GTK_CHECK_VERSION(4,0,0)`?
>
> I don't have much experience with VS Code myself, but I'd suppose it 
> uses the macro from the corresponding Gtk 3 header (e.g. 
> '/usr/include/gtk-3.0/gtk/gtkversion.h' on my Debian testing system).
>
>> I also looked into my project's `.vscode` folder into the 
>> `c_cpp_properties.json` file and added the GTK4 library install dir 
>> `"/usr/local/include/gtk-4.0"` as follows:
>> ```
>> {
>>      "configurations": [
>>          {
>>              "name": "Linux",
>>              "includePath": [
>>                  "${default}",
>>                  "/usr/local/include/gtk-4.0",
>>                  "/usr/include/gtk-3.0",
>>                  "/usr/include/glib-2.0",
>>                  "/usr/lib/x86_64-linux-gnu/glib-2.0/include",
>>                  "/usr/include/pango-1.0"
>>              ],
>>              "defines": [],
>>              "cStandard": "c17",
>>              "intelliSenseMode": "linux-clang-x64"
>>          }
>>      ],
>>      "version": 4
>> }
>
> What happens if you drop the Gtk 3 include path "/usr/include/gtk-3.0" 
> in addition?
> Alternatively, if you don't need the gtk3 VCL plugin, you could also 
> try adding '--disable-gtk3' to your 'autogen.input'.


More information about the LibreOffice mailing list